OSDN Git Service

Fix string to hash problem
authorFrank Li <lznuaa@gmail.com>
Mon, 18 Jan 2010 04:26:37 +0000 (12:26 +0800)
committerFrank Li <lznuaa@gmail.com>
Mon, 18 Jan 2010 04:26:37 +0000 (12:26 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Git/GitHash.h

index ed94274..f61e3a8 100644 (file)
@@ -29,17 +29,18 @@ public:
                {\r
                        unsigned char a;\r
                        a=0;\r
-                       for(int j=2*i;j<2*i+1;j++)\r
+                       for(int j=2*i;j<=2*i+1;j++)\r
                        {\r
+                               a =a<<4;\r
+\r
                                TCHAR ch = str[j];\r
                                if(ch >= _T('0') && ch <= _T('9'))\r
                                        a |= (ch - _T('0'))&0xF;\r
                                else if(ch >=_T('A') && ch <= _T('F'))\r
-                                       a |= (ch - _T('A'))&0xF;\r
+                                       a |= ((ch - _T('A'))&0xF) + 10 ;\r
                                else if(ch >=_T('a') && ch <= _T('f'))\r
-                                       a |= (ch - _T('a'))&0xF;\r
+                                       a |= ((ch - _T('a'))&0xF) + 10;         \r
                                \r
-                               a =a<<4;\r
                        }\r
                        m_hash[i]=a;\r
                }\r