]> Nishi Git Mirror - gwion.git/commitdiff
:bug: fix string.rfind
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 16 Aug 2021 07:23:00 +0000 (09:23 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 16 Aug 2021 07:23:00 +0000 (09:23 +0200)
src/lib/string.c
tests/string/find.gw

index 05c56d9afebaa97290a928e91ead7be4fc9b16ff..1ca973e27ef05448d478f423252621e9e3beeb2b 100644 (file)
@@ -337,8 +337,8 @@ static MFUN(string_rfindStrStart) {
   const m_str    base = STRING(o);
   const size_t   sz   = strlen(base);
   const char     pos  = *(m_int *)MEM(SZ_INT * 2);
-  const M_Object obj  = *(M_Object *)MEM(SZ_INT * 2);
-  if (sz) {
+  const M_Object obj  = *(M_Object *)MEM(SZ_INT);
+  if (sz && pos < sz) {
     const m_str arg = STRING(obj);
     m_str       tmp = base + pos, str = NULL;
     while ((tmp = strstr(tmp, arg))) str = tmp++;
index 6c42ccadb22f559e82dc55e7f6184674909574cd..3b923f3ce7f63915cd59bb6ba8acf7cc938958dc 100644 (file)
@@ -2,25 +2,25 @@
 <<< "test".find('a') >>>;
 <<< "".find('a') >>>;
 
-<<< "test".find(-1, 'e') >>>;
-<<< "test".find(0, 'e') >>>;
-<<< "test".find(1, 'a') >>>;
-<<< "".find(1, 'a') >>>;
+<<< "test".find('e', -1) >>>;
+<<< "test".find('e', 0) >>>;
+<<< "test".find('a', 1) >>>;
+<<< "".find('a', 0) >>>;
 
 <<< "test".find("es") >>>;
 <<< "test".find("a") >>>;
 <<< "".find("") >>>;
 
-<<< "test".find(-1, "es") >>>;
-<<< "test".find(0, "es") >>>;
-<<< "test".find(1, "a") >>>;
-<<< "".find(1, "") >>>;
+<<< "test".find("es", -1) >>>;
+<<< "test".find("es", 0) >>>;
+<<< "test".find("a", 1) >>>;
+<<< "".find("", 1) >>>;
 
 <<< "test".rfind("es") >>>;
 <<< "test".rfind("a") >>>;
 <<< "".rfind("") >>>;
 
-<<< "test".rfind(-1, "es") >>>;
-<<< "test".rfind(0, "e") >>>;
-<<< "test".rfind(1, "a") >>>;
-<<< "".rfind(1, "") >>>;
+<<< "test".rfind("es", -1) >>>;
+<<< "test".rfind("e", 0) >>>;
+<<< "test".rfind("a", 1) >>>;
+<<< "".rfind("", 1) >>>;