Yet another small self-loader fix.

diff --git a/loader/ne/segment.c b/loader/ne/segment.c
index 31c8522..c8186f0 100644
--- a/loader/ne/segment.c
+++ b/loader/ne/segment.c
@@ -69,17 +69,20 @@
 
     pSegTable = NE_SEG_TABLE( pModule );
     pSeg = pSegTable + segnum - 1;
-    pModuleTable = NE_MODULE_TABLE( pModule );
+
+    if (pSeg->flags & NE_SEGFLAGS_LOADED) /* already loaded ? */
+        return TRUE;
 
     if (!pSeg->filepos) return TRUE;  /* No file image, just return */
 	
+    pModuleTable = NE_MODULE_TABLE( pModule );
+
     fd = NE_OpenFile( pModule );
     TRACE(module, "Loading segment %d, hSeg=%04x, flags=%04x\n",
                     segnum, pSeg->hSeg, pSeg->flags );
     lseek( fd, pSeg->filepos << pModule->alignment, SEEK_SET );
     if (pSeg->size) size = pSeg->size;
-    else if (pSeg->minsize) size = pSeg->minsize;
-    else size = 0x10000;
+    else size = pSeg->minsize ? pSeg->minsize : 0x10000;
     mem = GlobalLock16(pSeg->hSeg);
     if (pModule->flags & NE_FFLAGS_SELFLOAD && segnum > 1)
     {
@@ -382,12 +385,12 @@
 BOOL32 NE_LoadAllSegments( NE_MODULE *pModule )
 {
     int i;
+    SEGTABLEENTRY * pSegTable = (SEGTABLEENTRY *) NE_SEG_TABLE(pModule);
 
     if (pModule->flags & NE_FFLAGS_SELFLOAD)
     {
         HFILE32 hf;
         /* Handle self loading modules */
-        SEGTABLEENTRY * pSegTable = (SEGTABLEENTRY *) NE_SEG_TABLE(pModule);
         SELFLOADHEADER *selfloadheader;
         STACK16FRAME *stack16Top;
         THDB *thdb = THREAD_Current();
@@ -430,12 +433,8 @@
         pSegTable[pModule->dgroup - 1].hSeg = saved_hSeg;
         thdb->cur_stack = oldstack;
 
-	/* FIXME
-	commented out by Andreas Mohr;
-	some self-loading exe ("BLINKER") relies on non-primary segs not loaded.
-	contact me if you experience problems */
-        /*for (i = 2; i <= pModule->seg_count; i++)
-            if (!NE_LoadSegment( pModule, i )) return FALSE;*/
+        for (i = 2; i <= pModule->seg_count; i++)
+            if (!NE_LoadSegment( pModule, i )) return FALSE;
     }
     else
     {
@@ -447,6 +446,20 @@
 
 
 /***********************************************************************
+ *           PatchCodeHandle
+ *
+ * Needed for self-loading modules.
+ */
+
+/* It does nothing */
+DWORD WINAPI PatchCodeHandle(HANDLE16 hSel)
+{
+    FIXME(module,"(%04x): stub.\n",hSel);
+    return (DWORD)NULL;
+}
+
+
+/***********************************************************************
  *           NE_FixupPrologs
  *
  * Fixup the exported functions prologs.
@@ -756,19 +769,6 @@
 
 
 /***********************************************************************
- *           PatchCodeHandle
- *
- * Needed for self-loading modules.
- */
-
-/* It does nothing */
-void WINAPI PatchCodeHandle(HANDLE16 hSel)
-{
-    FIXME(module,"(%04x): stub.\n",hSel);
-}
-
-
-/***********************************************************************
  *           NE_Ne2MemFlags
  *
  * This function translates NE segment flags to GlobalAlloc flags