Skip to content

Commit e86dafc

Browse files
committed
Fix bug with patching some locations of CoCreateInstance
1 parent 42f0bef commit e86dafc

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

RS_ASIO/Patcher.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ static const BYTE originalBytes_call_CoCreateInstance2[]{
1515
0x85, 0xc0 // test eax, eax
1616
};
1717

18+
// these are unused for now
19+
/*
1820
static const BYTE originalBytes_call_CoCreateInstance3[]{
1921
0xe8, 0x4d, 0xfa, 0x5a, 0x00, // call relative
2022
0x85, 0xc0, // test eax, eax
@@ -32,6 +34,7 @@ static const BYTE originalBytes_call_CoCreateInstance5[]{
3234
0x85, 0xc0, // test eax, eax
3335
0x78, 0x33 // js short ..
3436
};
37+
*/
3538

3639

3740
static const BYTE originalBytes_call_PortAudio_MarshalStreamComPointers[]{
@@ -206,9 +209,11 @@ void PatchOriginalCode()
206209
std::vector<void*> offsets_CoCreateInstanceAbs = FindBytesOffsets(originalBytes_call_CoCreateInstance, sizeof(originalBytes_call_CoCreateInstance));
207210
vector_append(offsets_CoCreateInstanceAbs, FindBytesOffsets(originalBytes_call_CoCreateInstance2, sizeof(originalBytes_call_CoCreateInstance2)));
208211

209-
std::vector<void*> offsets_CoCreateInstanceRel = FindBytesOffsets(originalBytes_call_CoCreateInstance3, sizeof(originalBytes_call_CoCreateInstance3));
210-
vector_append(offsets_CoCreateInstanceRel, FindBytesOffsets(originalBytes_call_CoCreateInstance4, sizeof(originalBytes_call_CoCreateInstance4)));
211-
vector_append(offsets_CoCreateInstanceRel, FindBytesOffsets(originalBytes_call_CoCreateInstance5, sizeof(originalBytes_call_CoCreateInstance5)));
212+
// this is not patching properly, and causing issues with midi stuff in RSMods.
213+
// we don't seem to need it, so let's keep it disabled.
214+
//std::vector<void*> offsets_CoCreateInstanceRel = FindBytesOffsets(originalBytes_call_CoCreateInstance3, sizeof(originalBytes_call_CoCreateInstance3));
215+
//vector_append(offsets_CoCreateInstanceRel, FindBytesOffsets(originalBytes_call_CoCreateInstance4, sizeof(originalBytes_call_CoCreateInstance4)));
216+
//vector_append(offsets_CoCreateInstanceRel, FindBytesOffsets(originalBytes_call_CoCreateInstance5, sizeof(originalBytes_call_CoCreateInstance5)));
212217

213218
std::vector<void*> offsets_PaMarshalPointers = FindBytesOffsets(originalBytes_call_PortAudio_MarshalStreamComPointers, sizeof(originalBytes_call_PortAudio_MarshalStreamComPointers));
214219
std::vector<void*> offsets_PaUnmarshalPointers = FindBytesOffsets(originalBytes_call_UnmarshalStreamComPointers, sizeof(originalBytes_call_UnmarshalStreamComPointers));
@@ -224,7 +229,7 @@ void PatchOriginalCode()
224229
// patch CoCreateInstance calls
225230
rslog::info_ts() << "Patching CoCreateInstance" << std::endl;
226231
Patch_CallAbsoluteAddress<(void*)&Patched_CoCreateInstance>(offsets_CoCreateInstanceAbs);
227-
Patch_CallRelativeAddress<(void*)&Patched_CoCreateInstance>(offsets_CoCreateInstanceRel);
232+
//Patch_CallRelativeAddress<(void*)&Patched_CoCreateInstance>(offsets_CoCreateInstanceRel);
228233

229234
// patch PortAudio MarshalStreamComPointers
230235
rslog::info_ts() << "Patching PortAudio MarshalStreamComPointers" << std::endl;

RS_ASIO/dllmain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ BOOL APIENTRY DllMain( HMODULE hModule,
1919
DisableThreadLibraryCalls(hModule);
2020

2121
rslog::InitLog();
22-
rslog::info_ts() << " - Wrapper DLL loaded (v0.6.0)" << std::endl;
22+
rslog::info_ts() << " - Wrapper DLL loaded (v0.6.1)" << std::endl;
2323
PatchOriginalCode();
2424
break;
2525
case DLL_PROCESS_DETACH:

0 commit comments

Comments
 (0)