PyObject *result;
PyTypeObject *typ;
PyObject *key;
- char *buf;
result = PyDict_GetItemWithError(_ctypes_ptrtype_cache, cls);
if (result) {
return NULL;
}
if (PyUnicode_CheckExact(cls)) {
- const char *name = PyUnicode_AsUTF8(cls);
- if (name == NULL)
- return NULL;
- buf = PyMem_Malloc(strlen(name) + 3 + 1);
- if (buf == NULL)
- return PyErr_NoMemory();
- sprintf(buf, "LP_%s", name);
+ PyObject *name = PyUnicode_FromFormat("LP_%U", cls);
result = PyObject_CallFunction((PyObject *)Py_TYPE(&PyCPointer_Type),
- "s(O){}",
- buf,
+ "N(O){}",
+ name,
&PyCPointer_Type);
- PyMem_Free(buf);
if (result == NULL)
return result;
key = PyLong_FromVoidPtr(result);
}
} else if (PyType_Check(cls)) {
typ = (PyTypeObject *)cls;
- buf = PyMem_Malloc(strlen(typ->tp_name) + 3 + 1);
- if (buf == NULL)
- return PyErr_NoMemory();
- sprintf(buf, "LP_%s", typ->tp_name);
+ PyObject *name = PyUnicode_FromFormat("LP_%s", typ->tp_name);
result = PyObject_CallFunction((PyObject *)Py_TYPE(&PyCPointer_Type),
- "s(O){sO}",
- buf,
+ "N(O){sO}",
+ name,
&PyCPointer_Type,
"_type_", cls);
- PyMem_Free(buf);
if (result == NULL)
return result;
key = Py_NewRef(cls);
return NULL;
}
for (flags++; *flags != '\0'; flags++) {
- char buf[40];
switch (*flags) {
#ifdef GDBM_FAST
case 'f':
break;
#endif
default:
- PyOS_snprintf(buf, sizeof(buf), "Flag '%c' is not supported.",
- *flags);
- PyErr_SetString(state->gdbm_error, buf);
+ PyErr_Format(state->gdbm_error,
+ "Flag '%c' is not supported.", (unsigned char)*flags);
return NULL;
}
}
/* check maximum */
if (new_buffer_size > INT_MAX) {
- char errmsg[100];
- sprintf(errmsg, "buffer_size must not be greater than %i", INT_MAX);
- PyErr_SetString(PyExc_ValueError, errmsg);
+ PyErr_Format(PyExc_ValueError, "buffer_size must not be greater than %i", INT_MAX);
return -1;
}