@@ -463,58 +463,47 @@ is_literal_char(unsigned char c)
463
463
static PyObject *
464
464
PyCArg_repr(PyCArgObject *self)
465
465
{
466
-
char buffer[256];
467
466
switch(self->tag) {
468
467
case 'b':
469
468
case 'B':
470
-
sprintf(buffer, "<cparam '%c' (%d)>",
469
+
return PyUnicode_FromFormat("<cparam '%c' (%d)>",
471
470
self->tag, self->value.b);
472
-
break;
473
471
case 'h':
474
472
case 'H':
475
-
sprintf(buffer, "<cparam '%c' (%d)>",
473
+
return PyUnicode_FromFormat("<cparam '%c' (%d)>",
476
474
self->tag, self->value.h);
477
-
break;
478
475
case 'i':
479
476
case 'I':
480
-
sprintf(buffer, "<cparam '%c' (%d)>",
477
+
return PyUnicode_FromFormat("<cparam '%c' (%d)>",
481
478
self->tag, self->value.i);
482
-
break;
483
479
case 'l':
484
480
case 'L':
485
-
sprintf(buffer, "<cparam '%c' (%ld)>",
481
+
return PyUnicode_FromFormat("<cparam '%c' (%ld)>",
486
482
self->tag, self->value.l);
487
-
break;
488
483
489
484
case 'q':
490
485
case 'Q':
491
-
sprintf(buffer,
492
-
#ifdef MS_WIN32
493
-
"<cparam '%c' (%I64d)>",
494
-
#else
495
-
"<cparam '%c' (%lld)>",
496
-
#endif
486
+
return PyUnicode_FromFormat("<cparam '%c' (%lld)>",
497
487
self->tag, self->value.q);
498
-
break;
499
488
case 'd':
500
-
sprintf(buffer, "<cparam '%c' (%f)>",
501
-
self->tag, self->value.d);
502
-
break;
503
-
case 'f':
504
-
sprintf(buffer, "<cparam '%c' (%f)>",
505
-
self->tag, self->value.f);
506
-
break;
507
-
489
+
case 'f': {
490
+
PyObject *f = PyFloat_FromDouble((self->tag == 'f') ? self->value.f : self->value.d);
491
+
if (f == NULL) {
492
+
return NULL;
493
+
}
494
+
PyObject *result = PyUnicode_FromFormat("<cparam '%c' (%R)>", self->tag, f);
495
+
Py_DECREF(f);
496
+
return result;
497
+
}
508
498
case 'c':
509
499
if (is_literal_char((unsigned char)self->value.c)) {
510
-
sprintf(buffer, "<cparam '%c' ('%c')>",
500
+
return PyUnicode_FromFormat("<cparam '%c' ('%c')>",
511
501
self->tag, self->value.c);
512
502
}
513
503
else {
514
-
sprintf(buffer, "<cparam '%c' ('\\x%02x')>",
504
+
return PyUnicode_FromFormat("<cparam '%c' ('\\x%02x')>",
515
505
self->tag, (unsigned char)self->value.c);
516
506
}
517
-
break;
518
507
519
508
/* Hm, are these 'z' and 'Z' codes useful at all?
520
509
Shouldn't they be replaced by the functionality of c_string
@@ -523,22 +512,20 @@ PyCArg_repr(PyCArgObject *self)
523
512
case 'z':
524
513
case 'Z':
525
514
case 'P':
526
-
sprintf(buffer, "<cparam '%c' (%p)>",
515
+
return PyUnicode_FromFormat("<cparam '%c' (%p)>",
527
516
self->tag, self->value.p);
528
517
break;
529
518
530
519
default:
531
520
if (is_literal_char((unsigned char)self->tag)) {
532
-
sprintf(buffer, "<cparam '%c' at %p>",
533
-
(unsigned char)self->tag, self);
521
+
return PyUnicode_FromFormat("<cparam '%c' at %p>",
522
+
(unsigned char)self->tag, (void *)self);
534
523
}
535
524
else {
536
-
sprintf(buffer, "<cparam 0x%02x at %p>",
537
-
(unsigned char)self->tag, self);
525
+
return PyUnicode_FromFormat("<cparam 0x%02x at %p>",
526
+
(unsigned char)self->tag, (void *)self);
538
527
}
539
-
break;
540
528
}
541
-
return PyUnicode_FromString(buffer);
542
529
}
543
530
544
531
static PyMemberDef PyCArgType_members[] = {
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4