[pypy-commit] cffi default: Test and fix.

arigo noreply at buildbot.pypy.org
Sun Jun 24 16:22:18 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r502:bf0449814cff
Date: 2012-06-24 16:22 +0200
http://bitbucket.org/cffi/cffi/changeset/bf0449814cff/

Log:	Test and fix.

diff --git a/c/_ffi_backend.c b/c/_ffi_backend.c
--- a/c/_ffi_backend.c
+++ b/c/_ffi_backend.c
@@ -744,6 +744,8 @@
                              "(got %zd characters)", ct->ct_name, n);
                 return -1;
             }
+            if (n != ct->ct_length)
+                n++;
             srcdata = PyString_AS_STRING(init);
             memcpy(data, srcdata, n);
             return 0;
diff --git a/c/test_c.py b/c/test_c.py
--- a/c/test_c.py
+++ b/c/test_c.py
@@ -875,3 +875,17 @@
         pass
     else:
         raise AssertionError
+
+def test_assign_string():
+    BChar = new_primitive_type("char")
+    BArray1 = new_array_type(new_pointer_type(BChar), 5)
+    BArray2 = new_array_type(new_pointer_type(BArray1), 5)
+    a = newp(BArray2, ["abc", "de", "ghij"])
+    assert str(a[2]) == "ghij"
+    a[2] = "."
+    assert str(a[2]) == "."
+    a[2] = "12345"
+    assert str(a[2]) == "12345"
+    e = py.test.raises(IndexError, 'a[2] = "123456"')
+    assert 'char[5]' in str(e.value)
+    assert 'got 6 characters' in str(e.value)


More information about the pypy-commit mailing list