Browse Source

Fix bug not matching one character at the beginning of a string.

mingodad 10 years ago
parent
commit
8c9429a24e
1 changed files with 4 additions and 5 deletions
  1. 4 5
      SquiLu/squirrel/sqbaselib.cpp

+ 4 - 5
SquiLu/squirrel/sqbaselib.cpp

@@ -1314,10 +1314,10 @@ static SQRESULT string_gmatch(HSQUIRRELVM v)
         }
         return sq_throwerror(v,_SC("invalid type for parameter 3 function expected"));
     }
-    _rc_ = str_match(&ms, src, src_size, pattern, pattern_size,
-            0, 0, 0, 0);
+    _rc_ = str_match(&ms, src, src_size, pattern, pattern_size, 0, 0, 0, 0);
     if(ms.error) return sq_throwerror(v, ms.error);
-    if(ms.level){
+    if(_rc_ < 0) sq_pushnull(v);
+    else if(ms.level){
         if(ms.level == 1) sq_pushstring(v, ms.capture[0].init, ms.capture[0].len);
         else {
             sq_newarray(v, ms.level);
@@ -1328,8 +1328,7 @@ static SQRESULT string_gmatch(HSQUIRRELVM v)
             }
         }
     } else {
-        if(ms.end_pos > ms.start_pos) sq_pushstring(v, src + ms.start_pos, ms.end_pos-ms.start_pos+1);
-        else sq_pushnull(v);
+        sq_pushstring(v, src + ms.start_pos, ms.end_pos-ms.start_pos+1);
     }
     return 1;
 }