Recovery of release 990110 after disk crash.
See Changelog for changes between 990103 and 990110.
diff --git a/loader/ne/segment.c b/loader/ne/segment.c
index 854cbf3..a40ee19 100644
--- a/loader/ne/segment.c
+++ b/loader/ne/segment.c
@@ -148,7 +148,7 @@
*/
char* buff = xmalloc(size);
char* curr = buff;
- ReadFile(hf, mem, size, &res, NULL);
+ ReadFile(hf, buff, size, &res, NULL);
while(curr < buff + size) {
unsigned int rept = *((short*) curr)++;
unsigned int len = *((short*) curr)++;
@@ -800,6 +800,17 @@
{
WORD size = wSize << wElem;
HANDLE16 hMem = GlobalAlloc16( NE_Ne2MemFlags(wFlags), size);
+
+ /* not data == code */
+ if ( (wFlags & NE_SEGFLAGS_EXECUTEONLY) ||
+ !(wFlags & NE_SEGFLAGS_DATA)
+ ) {
+ WORD hSel = GlobalHandleToSel(hMem);
+ WORD access = SelectorAccessRights(hSel,0,0);
+
+ access |= 2<<2; /* SEGMENT_CODE */
+ SelectorAccessRights(hSel,1,access);
+ }
return MAKELONG( hMem, GlobalHandleToSel(hMem) );
}