MysterX repairs
Merge to 5.2.1
This commit is contained in:
parent
45d72785de
commit
84d66ca8fe
|
@ -72,7 +72,8 @@ static void GC_BOX_DONE(void *v) {
|
||||||
|
|
||||||
static int is_member(Scheme_Object *a, Scheme_Object *l) {
|
static int is_member(Scheme_Object *a, Scheme_Object *l) {
|
||||||
while (!SCHEME_NULLP(l)) {
|
while (!SCHEME_NULLP(l)) {
|
||||||
if (SAME_OBJ(a, SCHEME_CAR(l))) return 1;
|
if (scheme_equal(a, SCHEME_CAR(l))) return 1;
|
||||||
|
l = SCHEME_CDR(l);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -981,12 +982,12 @@ Scheme_Object *mx_set_coclass(int argc, Scheme_Object **argv)
|
||||||
|
|
||||||
XFORM_NONGCING static int get_wow_flag(int pass)
|
XFORM_NONGCING static int get_wow_flag(int pass)
|
||||||
{
|
{
|
||||||
#ifndef _WIN64
|
#ifdef _WIN64
|
||||||
/* Try 64-bit first, but fall back to 32-bit keys */
|
/* Try 64-bit first, but fall back to 32-bit keys */
|
||||||
# define NUM_WOW_PASSES 1
|
# define NUM_WOW_PASSES 2
|
||||||
return ((pass == 0) ? KEY_WOW64_64KEY : KEY_WOW64_32KEY);
|
return ((pass == 0) ? KEY_WOW64_64KEY : KEY_WOW64_32KEY);
|
||||||
#else
|
#else
|
||||||
# define NUM_WOW_PASSES 0
|
# define NUM_WOW_PASSES 1
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1017,8 +1018,10 @@ Scheme_Object *mx_coclass(int argc, Scheme_Object **argv)
|
||||||
// use CLSID to rummage through Registry to find coclass
|
// use CLSID to rummage through Registry to find coclass
|
||||||
|
|
||||||
for (pass = 0; pass < NUM_WOW_PASSES; pass++) {
|
for (pass = 0; pass < NUM_WOW_PASSES; pass++) {
|
||||||
|
int wow;
|
||||||
|
wow = get_wow_flag(pass);
|
||||||
result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", (DWORD)0,
|
result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", (DWORD)0,
|
||||||
KEY_READ | get_wow_flag(pass),
|
KEY_READ | wow,
|
||||||
&hkey);
|
&hkey);
|
||||||
|
|
||||||
if (result != ERROR_SUCCESS)
|
if (result != ERROR_SUCCESS)
|
||||||
|
@ -1051,7 +1054,7 @@ Scheme_Object *mx_coclass(int argc, Scheme_Object **argv)
|
||||||
continue;
|
continue;
|
||||||
// open subkey
|
// open subkey
|
||||||
result = RegOpenKeyEx(hkey, clsIdBuffer, (DWORD)0,
|
result = RegOpenKeyEx(hkey, clsIdBuffer, (DWORD)0,
|
||||||
KEY_READ | get_wow_flag(pass),
|
KEY_READ | wow,
|
||||||
&hsubkey);
|
&hsubkey);
|
||||||
if (result != ERROR_SUCCESS)
|
if (result != ERROR_SUCCESS)
|
||||||
scheme_signal_error("coclass: Error obtaining coclass value");
|
scheme_signal_error("coclass: Error obtaining coclass value");
|
||||||
|
@ -3729,7 +3732,8 @@ void unmarshalVariant(Scheme_Object *val, VARIANTARG *pVariantArg)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VT_VARIANT | VT_BYREF :
|
case VT_VARIANT | VT_BYREF :
|
||||||
SCHEME_BOX_VAL(val) = variantToSchemeObject(pVariantArg->pvarVal);
|
v = variantToSchemeObject(pVariantArg->pvarVal);
|
||||||
|
SCHEME_BOX_VAL(val) = v;
|
||||||
free(pVariantArg->pvarVal);
|
free(pVariantArg->pvarVal);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -4539,8 +4543,10 @@ Scheme_Object *mx_all_clsid(int argc, Scheme_Object **argv, char **attributes)
|
||||||
retval = scheme_null;
|
retval = scheme_null;
|
||||||
|
|
||||||
for (pass = 0; pass < NUM_WOW_PASSES; pass++) {
|
for (pass = 0; pass < NUM_WOW_PASSES; pass++) {
|
||||||
|
int wow;
|
||||||
|
wow = get_wow_flag(pass);
|
||||||
result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", (DWORD)0,
|
result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", (DWORD)0,
|
||||||
KEY_READ | get_wow_flag(pass),
|
KEY_READ | wow,
|
||||||
&hkey);
|
&hkey);
|
||||||
|
|
||||||
if (result != ERROR_SUCCESS) return retval;
|
if (result != ERROR_SUCCESS) return retval;
|
||||||
|
@ -4563,7 +4569,7 @@ Scheme_Object *mx_all_clsid(int argc, Scheme_Object **argv, char **attributes)
|
||||||
|
|
||||||
// open subkey
|
// open subkey
|
||||||
result = RegOpenKeyEx(hkey, clsidBuffer, (DWORD)0,
|
result = RegOpenKeyEx(hkey, clsidBuffer, (DWORD)0,
|
||||||
KEY_READ | get_wow_flag(pass),
|
KEY_READ | wow,
|
||||||
&hsubkey);
|
&hsubkey);
|
||||||
|
|
||||||
if (result != ERROR_SUCCESS)
|
if (result != ERROR_SUCCESS)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user