Recovery of release 990110 after disk crash.
See Changelog for changes between 990103 and 990110.
diff --git a/loader/ne/convert.c b/loader/ne/convert.c
index ec6975c..0d201e6 100644
--- a/loader/ne/convert.c
+++ b/loader/ne/convert.c
@@ -376,6 +376,28 @@
}
/**********************************************************************
+ * ConvertAccelerator32To16
+ */
+VOID ConvertAccelerator32To16( LPVOID acc32, DWORD size, LPVOID acc16 )
+{
+ int type;
+
+ do
+ {
+ /* Copy type */
+ type = *((BYTE *)acc16)++ = *((BYTE *)acc32)++;
+ /* Skip padding */
+ ((BYTE *)acc32)++;
+ /* Copy event and IDval */
+ *((WORD *)acc16)++ = *((WORD *)acc32)++;
+ *((WORD *)acc16)++ = *((WORD *)acc32)++;
+ /* Skip padding */
+ ((WORD *)acc32)++;
+
+ } while ( !( type & 0x80 ) );
+}
+
+/**********************************************************************
* NE_LoadPEResource
*/
HGLOBAL16 NE_LoadPEResource( NE_MODULE *pModule, WORD type, LPVOID bits, DWORD size )
@@ -397,6 +419,10 @@
ConvertDialog32To16( bits, size, GlobalLock16( handle ) );
break;
+ case RT_ACCELERATOR16:
+ ConvertAccelerator32To16( bits, size, GlobalLock16( handle ) );
+ break;
+
case RT_STRING16:
FIXME( resource, "not yet implemented!\n" );
/* fall through */
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) );
}