From 2c310fd7a0f5f653abba42b6d0f6cf6cf91ee0b5 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 9 Feb 2010 14:03:15 +0100 Subject: Python analyzer: make hashing bug-for-bug compatible :] Signed-off-by: Denys Vlasenko --- lib/Plugins/Python.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/Plugins/Python.cpp b/lib/Plugins/Python.cpp index d6a3084d..12cc47ef 100644 --- a/lib/Plugins/Python.cpp +++ b/lib/Plugins/Python.cpp @@ -38,7 +38,27 @@ string CAnalyzerPython::GetLocalUUID(const char *pDebugDumpDir) unsigned char hash2[MD5_RESULT_LEN]; md5_ctx_t md5ctx; md5_begin(&md5ctx); - md5_hash(bt_str, bt_end - bt_str, &md5ctx); + // Better: + // "example.py:1::ZeroDivisionError: integer division or modulo by zero" + //md5_hash(bt_str, bt_end - bt_str, &md5ctx); + // For now using compat version: + { + char *copy = xstrndup(bt_str, bt_end - bt_str); + char *s = copy; + char *d = copy; + unsigned colon_cnt = 0; + while (*s && colon_cnt < 3) { + if (*s != ':') + *d++ = *s; + else + colon_cnt++; + s++; + } + // "example.py1" + md5_hash(copy, d - copy, &md5ctx); +//*d = '\0'; log("str:'%s'", copy); + free(copy); + } md5_end(hash2, &md5ctx); // Hash is MD5_RESULT_LEN bytes long, but we use only first 4 @@ -56,7 +76,6 @@ string CAnalyzerPython::GetLocalUUID(const char *pDebugDumpDir) //log("hash2:%s str:'%.*s'", hash_str, (int)(bt_end - bt_str), bt_str); return hash_str; - } string CAnalyzerPython::GetGlobalUUID(const char *pDebugDumpDir) { -- cgit