[Python-checkins] cpython: Switch binascii over to using the common _Py_strhex implementation for its hex

gregory.p.smith python-checkins at python.org
Sun Apr 26 02:42:24 CEST 2015


https://hg.python.org/cpython/rev/7f0811452d0f
changeset: 95801:7f0811452d0f
user: Gregory P. Smith <greg at krypto.org>
date: Sun Apr 26 00:42:13 2015 +0000
summary:
 Switch binascii over to using the common _Py_strhex implementation for its hex
and hexlify functions. issue9951.
files:
 Modules/binascii.c | 31 +++----------------------------
 1 files changed, 3 insertions(+), 28 deletions(-)
diff --git a/Modules/binascii.c b/Modules/binascii.c
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -56,6 +56,7 @@
 #define PY_SSIZE_T_CLEAN
 
 #include "Python.h"
+#include "pystrhex.h"
 #ifdef USE_ZLIB_CRC32
 #include "zlib.h"
 #endif
@@ -1117,33 +1118,7 @@
 binascii_b2a_hex_impl(PyModuleDef *module, Py_buffer *data)
 /*[clinic end generated code: output=179318922c2f8fda input=96423cfa299ff3b1]*/
 {
- char* argbuf;
- Py_ssize_t arglen;
- PyObject *retval;
- char* retbuf;
- Py_ssize_t i, j;
-
- argbuf = data->buf;
- arglen = data->len;
-
- assert(arglen >= 0);
- if (arglen > PY_SSIZE_T_MAX / 2)
- return PyErr_NoMemory();
-
- retval = PyBytes_FromStringAndSize(NULL, arglen*2);
- if (!retval)
- return NULL;
- retbuf = PyBytes_AS_STRING(retval);
-
- /* make hex version of string, taken from shamodule.c */
- for (i=j=0; i < arglen; i++) {
- unsigned char c;
- c = (argbuf[i] >> 4) & 0xf;
- retbuf[j++] = Py_hexdigits[c];
- c = argbuf[i] & 0xf;
- retbuf[j++] = Py_hexdigits[c];
- }
- return retval;
+ return _Py_strhex_bytes((const char *)data->buf, data->len);
 }
 
 /*[clinic input]
@@ -1158,7 +1133,7 @@
 binascii_hexlify_impl(PyModuleDef *module, Py_buffer *data)
 /*[clinic end generated code: output=6098440091fb61dc input=2e3afae7f083f061]*/
 {
- return binascii_b2a_hex_impl(module, data);
+ return _Py_strhex_bytes((const char *)data->buf, data->len);
 }
 
 static int
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /