OSDN Git Service

Fix assertion failure in finddata
authorJohan t Hart <johanthart@gmail.com>
Sat, 7 Feb 2009 14:33:42 +0000 (15:33 +0100)
committerFrank Li <lznuaa@gmail.com>
Sun, 8 Feb 2009 07:05:05 +0000 (15:05 +0800)
src/Git/gittype.h

index 076951f..395aeb5 100644 (file)
@@ -40,8 +40,17 @@ public:
        }\r
        int findData(const BYTE* dataToFind, size_t dataSize, int start=0)\r
        {\r
+               //Pre checks\r
+               if(empty())\r
+                       return -1;\r
+               if(dataSize==0)\r
+                       return 0;\r
+               if(dataSize>size()-start)\r
+                       return -1;//Data to find is greater then data to search in. No match\r
+\r
+               //Initialize\r
                const BYTE* pos=&*(begin()+start);\r
-               const BYTE* dataEnd=&*(begin()+size()-(dataSize-1) );//Set end one step after last place to search\r
+               const BYTE* dataEnd=&*(begin()+(size()-dataSize) );++dataEnd;//Set end one step after last place to search\r
                if(pos>=dataEnd)\r
                        return -1;//Started over end. Return not found\r
                if(dataSize==0)\r