From 41d375a4359290b2dee46114a4d0538b7e0c49e8 Mon Sep 17 00:00:00 2001 From: zeromus Date: Fri, 13 Jun 2008 01:33:46 +0000 Subject: [PATCH] fix bug in guid parsing causing rerecording always to fail --- src/types.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/types.h b/src/types.h index 6271e8fc..c6f7df70 100644 --- a/src/types.h +++ b/src/types.h @@ -177,6 +177,19 @@ struct FCEU_Guid : public ValueArray return ret; } + static uint8 hexToByte(char** ptrptr) + { + char a = toupper(**ptrptr); + (*ptrptr)++; + char b = toupper(**ptrptr); + (*ptrptr)++; + if(a>='A') a=a-'A'+10; + else a-='0'; + if(b>='A') b=b-'A'+10; + else b-='0'; + return ((unsigned char)a<<4)|(unsigned char)b; + } + void scan(std::string str) { char* endptr = (char*)str.c_str(); @@ -184,8 +197,9 @@ struct FCEU_Guid : public ValueArray FCEU_en16lsb(data+4,strtoul(endptr+1,&endptr,16)); FCEU_en16lsb(data+6,strtoul(endptr+1,&endptr,16)); FCEU_en16lsb(data+8,strtoul(endptr+1,&endptr,16)); + endptr++; for(int i=0;i<6;i++) - data[10+i] = strtoul(endptr+1,&endptr,16); + data[10+i] = hexToByte(&endptr); } };