[Python-checkins] cpython: Backed out changeset b0087e17cd5e (issue #26765)

serhiy.storchaka python-checkins at python.org
Sun Jul 3 06:58:15 EDT 2016


https://hg.python.org/cpython/rev/6c4c0a23fabb
changeset:   102247:6c4c0a23fabb
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Sun Jul 03 13:57:48 2016 +0300
summary:
  Backed out changeset b0087e17cd5e (issue #26765)

For unknown reasons it perhaps caused a crash on 32-bit Windows (issue #).

files:
  Objects/bytearrayobject.c        |  79 ++++++++++++++++--
  Objects/bytesobject.c            |  82 +++++++++++++++++--
  Objects/stringlib/transmogrify.h |  54 -------------
  3 files changed, 138 insertions(+), 77 deletions(-)


diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -1097,6 +1097,18 @@
 #include "stringlib/transmogrify.h"
 
 
+static PyObject *
+bytearray_find(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_find(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
+static PyObject *
+bytearray_count(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_count(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
 /*[clinic input]
 bytearray.clear
 
@@ -1126,6 +1138,42 @@
                                          PyByteArray_GET_SIZE(self));
 }
 
+static PyObject *
+bytearray_index(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_index(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
+static PyObject *
+bytearray_rfind(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_rfind(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
+static PyObject *
+bytearray_rindex(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_rindex(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
+static int
+bytearray_contains(PyObject *self, PyObject *arg)
+{
+    return _Py_bytes_contains(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), arg);
+}
+
+static PyObject *
+bytearray_startswith(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_startswith(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
+static PyObject *
+bytearray_endswith(PyByteArrayObject *self, PyObject *args)
+{
+    return _Py_bytes_endswith(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), args);
+}
+
 
 /*[clinic input]
 bytearray.translate
@@ -1281,8 +1329,8 @@
 /*[clinic end generated code: output=d39884c4dc59412a input=aa379d988637c7fb]*/
 {
     return stringlib_replace((PyObject *)self,
-                             old->buf, old->len,
-                             new->buf, new->len, count);
+                             (const char *)old->buf, old->len,
+                             (const char *)new->buf, new->len, count);
 }
 
 /*[clinic input]
@@ -1948,6 +1996,14 @@
 Example: bytearray([0xb9, 0x01, 0xef]).hex() -> 'b901ef'.");
 
 static PyObject *
+bytearray_hex(PyBytesObject *self)
+{
+    char* argbuf = PyByteArray_AS_STRING(self);
+    Py_ssize_t arglen = PyByteArray_GET_SIZE(self);
+    return _Py_strhex(argbuf, arglen);
+}
+
+static PyObject *
 _common_reduce(PyByteArrayObject *self, int proto)
 {
     PyObject *dict;
@@ -2035,7 +2091,7 @@
     0,                                      /* sq_slice */
     (ssizeobjargproc)bytearray_setitem,     /* sq_ass_item */
     0,                                      /* sq_ass_slice */
-    (objobjproc)stringlib_contains,         /* sq_contains */
+    (objobjproc)bytearray_contains,         /* sq_contains */
     (binaryfunc)bytearray_iconcat,          /* sq_inplace_concat */
     (ssizeargfunc)bytearray_irepeat,        /* sq_inplace_repeat */
 };
@@ -2063,19 +2119,19 @@
     {"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
     BYTEARRAY_CLEAR_METHODDEF
     BYTEARRAY_COPY_METHODDEF
-    {"count", (PyCFunction)stringlib_method_count, METH_VARARGS,
+    {"count", (PyCFunction)bytearray_count, METH_VARARGS,
      _Py_count__doc__},
     BYTEARRAY_DECODE_METHODDEF
-    {"endswith", (PyCFunction)stringlib_endswith, METH_VARARGS,
+    {"endswith", (PyCFunction)bytearray_endswith, METH_VARARGS,
      _Py_endswith__doc__},
     {"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
      _Py_expandtabs__doc__},
     BYTEARRAY_EXTEND_METHODDEF
-    {"find", (PyCFunction)stringlib_method_find, METH_VARARGS,
+    {"find", (PyCFunction)bytearray_find, METH_VARARGS,
      _Py_find__doc__},
     BYTEARRAY_FROMHEX_METHODDEF
-    {"hex", (PyCFunction)stringlib_hex, METH_NOARGS, hex__doc__},
-    {"index", (PyCFunction)stringlib_index, METH_VARARGS, _Py_index__doc__},
+    {"hex", (PyCFunction)bytearray_hex, METH_NOARGS, hex__doc__},
+    {"index", (PyCFunction)bytearray_index, METH_VARARGS, _Py_index__doc__},
     BYTEARRAY_INSERT_METHODDEF
     {"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
      _Py_isalnum__doc__},
@@ -2101,16 +2157,15 @@
     BYTEARRAY_REMOVE_METHODDEF
     BYTEARRAY_REPLACE_METHODDEF
     BYTEARRAY_REVERSE_METHODDEF
-    {"rfind", (PyCFunction)stringlib_method_rfind, METH_VARARGS,
-     _Py_rfind__doc__},
-    {"rindex", (PyCFunction)stringlib_rindex, METH_VARARGS, _Py_rindex__doc__},
+    {"rfind", (PyCFunction)bytearray_rfind, METH_VARARGS, _Py_rfind__doc__},
+    {"rindex", (PyCFunction)bytearray_rindex, METH_VARARGS, _Py_rindex__doc__},
     {"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
     BYTEARRAY_RPARTITION_METHODDEF
     BYTEARRAY_RSPLIT_METHODDEF
     BYTEARRAY_RSTRIP_METHODDEF
     BYTEARRAY_SPLIT_METHODDEF
     BYTEARRAY_SPLITLINES_METHODDEF
-    {"startswith", (PyCFunction)stringlib_startswith, METH_VARARGS,
+    {"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS ,
      _Py_startswith__doc__},
     BYTEARRAY_STRIP_METHODDEF
     {"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -1485,6 +1485,12 @@
     return (PyObject *) op;
 }
 
+static int
+bytes_contains(PyObject *self, PyObject *arg)
+{
+    return _Py_bytes_contains(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), arg);
+}
+
 static PyObject *
 bytes_item(PyBytesObject *a, Py_ssize_t i)
 {
@@ -1695,7 +1701,7 @@
     0,                  /*sq_slice*/
     0,                  /*sq_ass_item*/
     0,                  /*sq_ass_slice*/
-    (objobjproc)stringlib_contains /*sq_contains*/
+    (objobjproc)bytes_contains /*sq_contains*/
 };
 
 static PyMappingMethods bytes_as_mapping = {
@@ -1867,6 +1873,32 @@
     return bytes_join((PyBytesObject*)sep, x);
 }
 
+static PyObject *
+bytes_find(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_find(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
+static PyObject *
+bytes_index(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_index(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
+
+static PyObject *
+bytes_rfind(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_rfind(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
+
+static PyObject *
+bytes_rindex(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_rindex(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
 
 Py_LOCAL_INLINE(PyObject *)
 do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj)
@@ -2003,6 +2035,13 @@
 }
 
 
+static PyObject *
+bytes_count(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_count(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
+
 /*[clinic input]
 bytes.translate
 
@@ -2189,6 +2228,19 @@
 /** End DALKE **/
 
 
+static PyObject *
+bytes_startswith(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_startswith(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
+static PyObject *
+bytes_endswith(PyBytesObject *self, PyObject *args)
+{
+    return _Py_bytes_endswith(PyBytes_AS_STRING(self), PyBytes_GET_SIZE(self), args);
+}
+
+
 /*[clinic input]
 bytes.decode
 
@@ -2343,6 +2395,14 @@
 Example: b'\\xb9\\x01\\xef'.hex() -> 'b901ef'.");
 
 static PyObject *
+bytes_hex(PyBytesObject *self)
+{
+    char* argbuf = PyBytes_AS_STRING(self);
+    Py_ssize_t arglen = PyBytes_GET_SIZE(self);
+    return _Py_strhex(argbuf, arglen);
+}
+
+static PyObject *
 bytes_getnewargs(PyBytesObject *v)
 {
     return Py_BuildValue("(y#)", v->ob_sval, Py_SIZE(v));
@@ -2354,19 +2414,20 @@
     {"__getnewargs__",          (PyCFunction)bytes_getnewargs,  METH_NOARGS},
     {"capitalize", (PyCFunction)stringlib_capitalize, METH_NOARGS,
      _Py_capitalize__doc__},
-    {"center", (PyCFunction)stringlib_center, METH_VARARGS, _Py_center__doc__},
-    {"count", (PyCFunction)stringlib_method_count, METH_VARARGS,
+    {"center", (PyCFunction)stringlib_center, METH_VARARGS,
+     _Py_center__doc__},
+    {"count", (PyCFunction)bytes_count, METH_VARARGS,
      _Py_count__doc__},
     BYTES_DECODE_METHODDEF
-    {"endswith", (PyCFunction)stringlib_endswith, METH_VARARGS,
+    {"endswith", (PyCFunction)bytes_endswith, METH_VARARGS,
      _Py_endswith__doc__},
     {"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS | METH_KEYWORDS,
      _Py_expandtabs__doc__},
-    {"find", (PyCFunction)stringlib_method_find, METH_VARARGS,
+    {"find", (PyCFunction)bytes_find, METH_VARARGS,
      _Py_find__doc__},
     BYTES_FROMHEX_METHODDEF
-    {"hex", (PyCFunction)stringlib_hex, METH_NOARGS, hex__doc__},
-    {"index", (PyCFunction)stringlib_index, METH_VARARGS, _Py_index__doc__},
+    {"hex", (PyCFunction)bytes_hex, METH_NOARGS, hex__doc__},
+    {"index", (PyCFunction)bytes_index, METH_VARARGS, _Py_index__doc__},
     {"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
      _Py_isalnum__doc__},
     {"isalpha", (PyCFunction)stringlib_isalpha, METH_NOARGS,
@@ -2388,16 +2449,15 @@
     BYTES_MAKETRANS_METHODDEF
     BYTES_PARTITION_METHODDEF
     BYTES_REPLACE_METHODDEF
-    {"rfind", (PyCFunction)stringlib_method_rfind, METH_VARARGS,
-     _Py_rfind__doc__},
-    {"rindex", (PyCFunction)stringlib_rindex, METH_VARARGS, _Py_rindex__doc__},
+    {"rfind", (PyCFunction)bytes_rfind, METH_VARARGS, _Py_rfind__doc__},
+    {"rindex", (PyCFunction)bytes_rindex, METH_VARARGS, _Py_rindex__doc__},
     {"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, _Py_rjust__doc__},
     BYTES_RPARTITION_METHODDEF
     BYTES_RSPLIT_METHODDEF
     BYTES_RSTRIP_METHODDEF
     BYTES_SPLIT_METHODDEF
     BYTES_SPLITLINES_METHODDEF
-    {"startswith", (PyCFunction)stringlib_startswith, METH_VARARGS,
+    {"startswith", (PyCFunction)bytes_startswith, METH_VARARGS,
      _Py_startswith__doc__},
     BYTES_STRIP_METHODDEF
     {"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
diff --git a/Objects/stringlib/transmogrify.h b/Objects/stringlib/transmogrify.h
--- a/Objects/stringlib/transmogrify.h
+++ b/Objects/stringlib/transmogrify.h
@@ -2,60 +2,6 @@
 # error "transmogrify.h only compatible with byte-wise strings"
 #endif
 
-Py_LOCAL(PyObject *)
-stringlib_method_find(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_find(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_index(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_index(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_method_rfind(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_rfind(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_rindex(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_rindex(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_method_count(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_count(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(int)
-stringlib_contains(PyObject *self, PyObject *arg)
-{
-    return _Py_bytes_contains(STRINGLIB_STR(self), STRINGLIB_LEN(self), arg);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_startswith(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_startswith(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_endswith(PyObject *self, PyObject *args)
-{
-    return _Py_bytes_endswith(STRINGLIB_STR(self), STRINGLIB_LEN(self), args);
-}
-
-Py_LOCAL(PyObject *)
-stringlib_hex(PyObject *self)
-{
-    return _Py_strhex(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
 /* the more complicated methods.  parts of these should be pulled out into the
    shared code in bytes_methods.c to cut down on duplicate code bloat.  */
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list