@@ -1291,24 +1291,16 @@ U_set(void *ptr, PyObject *value, Py_ssize_t length) |
|
|
1291 |
1291 |
static PyObject * |
1292 |
1292 |
s_get(void *ptr, Py_ssize_t size) |
1293 |
1293 |
{ |
1294 |
|
-PyObject *result; |
1295 |
|
-size_t slen; |
|
1294 |
+Py_ssize_t i; |
|
1295 |
+char *p; |
1296 |
1296 |
|
1297 |
|
-result = PyString_FromString((char *)ptr); |
1298 |
|
-if (!result) |
1299 |
|
-return NULL; |
1300 |
|
-/* chop off at the first NUL character, if any. |
1301 |
|
- * On error, result will be deallocated and set to NULL. |
1302 |
|
- */ |
1303 |
|
-slen = strlen(PyString_AS_STRING(result)); |
1304 |
|
-size = min(size, (Py_ssize_t)slen); |
1305 |
|
-if (result->ob_refcnt == 1) { |
1306 |
|
-/* shorten the result */ |
1307 |
|
-_PyString_Resize(&result, size); |
1308 |
|
-return result; |
1309 |
|
- } else |
1310 |
|
-/* cannot shorten the result */ |
1311 |
|
-return PyString_FromStringAndSize(ptr, size); |
|
1297 |
+p = (char *)ptr; |
|
1298 |
+for (i = 0; i < size; ++i) { |
|
1299 |
+if (*p++ == '\0') |
|
1300 |
+break; |
|
1301 |
+ } |
|
1302 |
+ |
|
1303 |
+return PyBytes_FromStringAndSize((char *)ptr, (Py_ssize_t)i); |
1312 |
1304 |
} |
1313 |
1305 |
|
1314 |
1306 |
static PyObject * |