瀏覽代碼

Refactoring to remove undefined behavior.

mingodad 8 年之前
父節點
當前提交
0108cb3b20
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6 3
      SquiLu-ext/sq_sqlite3.cpp

+ 6 - 3
SquiLu-ext/sq_sqlite3.cpp

@@ -1161,15 +1161,18 @@ static SQRESULT sle2array(HSQUIRRELVM v, const unsigned char *p, size_t sle_size
             }
             }
             else if(size == 249)
             else if(size == 249)
             {
             {
-                size = 2288 + (IBYTE_MAX * (*p++)) + (*p++);
+                const unsigned char *p1 = p++, *p2 = p++;
+                size = 2288 + (IBYTE_MAX * (*p1)) + (*p2);
             }
             }
             else if(size == 250)
             else if(size == 250)
             {
             {
-                size = ((*p++)<<16) + ((*p++)<<8) + (*p++);
+                const unsigned char *p1 = p++, *p2 = p++, *p3 = p++;
+                size = ((*p1)<<16) + ((*p2)<<8) + (*p3);
             }
             }
             else if(size == 251)
             else if(size == 251)
             {
             {
-                size = ((*p++)<<24) + ((*p++)<<16) + ((*p++)<<8) + (*p++);
+                const unsigned char *p1 = p++, *p2 = p++, *p3 = p++, *p4 = p++;
+                size = ((*p1)<<24) + ((*p2)<<16) + ((*p3)<<8) + (*p4);
             }
             }
             else if(size == SLEMARK)
             else if(size == SLEMARK)
             {
             {