]> sigrok.org Git - sigrok-util.git/commitdiff
sigrok-cross-android: Fix brokenness in mbstowcs/wcstombs in Python patch
authorMarcus Comstedt <redacted>
Sat, 26 Apr 2014 13:30:12 +0000 (15:30 +0200)
committerUwe Hermann <redacted>
Mon, 25 Aug 2014 20:38:43 +0000 (22:38 +0200)
cross-compile/android/Python-3.3.3.patch

index 1b3428014618961dca83e752c4d99bf0788fb18e..7a71928c1b676b5f72ea53c75c857031e7d1ac41 100644 (file)
@@ -85,7 +85,7 @@ diff --git a/Python/pythonrun.c b/Python/pythonrun.c
 index 832df53..c43e5e9 100644
 --- a/Python/pythonrun.c
 +++ b/Python/pythonrun.c
 index 832df53..c43e5e9 100644
 --- a/Python/pythonrun.c
 +++ b/Python/pythonrun.c
-@@ -810,6 +810,44 @@ Py_SetPythonHome(wchar_t *home)
+@@ -810,6 +810,51 @@ Py_SetPythonHome(wchar_t *home)
      default_home = home;
  }
  
      default_home = home;
  }
  
@@ -96,15 +96,20 @@ index 832df53..c43e5e9 100644
 +    size_t size = 0;
 +    if (in)
 +    {
 +    size_t size = 0;
 +    if (in)
 +    {
-+        while(*in && size<maxlen) {
-+            if(*in < 128)
-+                *out++ = *in++;
-+            else
-+                *out++ = 0xdc00 + *in++;
++        while(*in && (!out || size<maxlen)) {
++            if (out) {
++                if(*in < 128)
++                    *out++ = *in++;
++                else
++                    *out++ = 0xdc00 + *in++;
++            } else {
++               in++;
++            }
 +            size += 1;
 +        }
 +    }
 +            size += 1;
 +        }
 +    }
-+    *out = 0;
++    if (out && size<maxlen)
++        *out = 0;
 +    return size;
 +}
 +
 +    return size;
 +}
 +
@@ -112,7 +117,7 @@ index 832df53..c43e5e9 100644
 +{
 +    wchar_t c;
 +    size_t i;
 +{
 +    wchar_t c;
 +    size_t i;
-+    for (i=0; i<maxlen && source[i]; i++)
++    for (i=0; (!dest || i<maxlen) && source[i]; i++)
 +    {
 +        c=source[i];
 +        if (c >= 0xdc80 && c <= 0xdcff)
 +    {
 +        c=source[i];
 +        if (c >= 0xdc80 && c <= 0xdcff)
@@ -123,6 +128,8 @@ index 832df53..c43e5e9 100644
 +        if (dest)
 +            dest[i]=c;
 +    }
 +        if (dest)
 +            dest[i]=c;
 +    }
++    if (dest && i<maxlen)
++        dest[i] = 0;
 +    return i;
 +}
 +#endif
 +    return i;
 +}
 +#endif