mirror of https://github.com/python/cpython
Switch binascii over to using the common _Py_strhex implementation for its hex
and hexlify functions. issue9951.
This commit is contained in:
parent
e3f6393b52
commit
9c6b916662
|
@ -56,6 +56,7 @@
|
||||||
#define PY_SSIZE_T_CLEAN
|
#define PY_SSIZE_T_CLEAN
|
||||||
|
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
|
#include "pystrhex.h"
|
||||||
#ifdef USE_ZLIB_CRC32
|
#ifdef USE_ZLIB_CRC32
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -1117,33 +1118,7 @@ static PyObject *
|
||||||
binascii_b2a_hex_impl(PyModuleDef *module, Py_buffer *data)
|
binascii_b2a_hex_impl(PyModuleDef *module, Py_buffer *data)
|
||||||
/*[clinic end generated code: output=179318922c2f8fda input=96423cfa299ff3b1]*/
|
/*[clinic end generated code: output=179318922c2f8fda input=96423cfa299ff3b1]*/
|
||||||
{
|
{
|
||||||
char* argbuf;
|
return _Py_strhex_bytes((const char *)data->buf, data->len);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
|
@ -1158,7 +1133,7 @@ static PyObject *
|
||||||
binascii_hexlify_impl(PyModuleDef *module, Py_buffer *data)
|
binascii_hexlify_impl(PyModuleDef *module, Py_buffer *data)
|
||||||
/*[clinic end generated code: output=6098440091fb61dc input=2e3afae7f083f061]*/
|
/*[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
|
static int
|
||||||
|
|
Loading…
Reference in New Issue