1.1 --- a/core/GameConfigs.cpp Thu Sep 17 13:08:18 2009 -0400
1.2 +++ b/core/GameConfigs.cpp Sat Sep 26 17:12:23 2009 -0400
1.3 @@ -519,45 +519,18 @@
1.4 }
1.5 #endif
1.6 /* First, preprocess the signature */
1.7 - char real_sig[511];
1.8 + unsigned char real_sig[511];
1.9 size_t real_bytes;
1.10 size_t length;
1.11
1.12 real_bytes = 0;
1.13 length = strlen(s_TempSig.sig);
1.14
1.15 - for (size_t i=0; i<length; i++)
1.16 - {
1.17 - if (real_bytes >= sizeof(real_sig))
1.18 - {
1.19 - break;
1.20 - }
1.21 - real_sig[real_bytes++] = s_TempSig.sig[i];
1.22 - if (s_TempSig.sig[i] == '\\'
1.23 - && s_TempSig.sig[i+1] == 'x')
1.24 - {
1.25 - if (i + 3 >= length)
1.26 - {
1.27 - continue;
1.28 - }
1.29 - /* Get the hex part */
1.30 - char s_byte[3];
1.31 - int r_byte;
1.32 - s_byte[0] = s_TempSig.sig[i+2];
1.33 - s_byte[1] = s_TempSig.sig[i+3];
1.34 - s_byte[2] = '\0';
1.35 - /* Read it as an integer */
1.36 - sscanf(s_byte, "%x", &r_byte);
1.37 - /* Save the value */
1.38 - real_sig[real_bytes-1] = r_byte;
1.39 - /* Adjust index */
1.40 - i += 3;
1.41 - }
1.42 - }
1.43 + real_bytes = UTIL_DecodeHexString(real_sig, sizeof(real_sig), s_TempSig.sig);
1.44
1.45 if (real_bytes >= 1)
1.46 {
1.47 - final_addr = g_MemUtils.FindPattern(addrInBase, real_sig, real_bytes);
1.48 + final_addr = g_MemUtils.FindPattern(addrInBase, (char*)real_sig, real_bytes);
1.49 }
1.50 }
1.51