@@ -487,58 +487,47 @@ is_literal_char(unsigned char c)
487
487
static PyObject *
488
488
PyCArg_repr(PyCArgObject *self)
489
489
{
490
-
char buffer[256];
491
490
switch(self->tag) {
492
491
case 'b':
493
492
case 'B':
494
-
sprintf(buffer, "<cparam '%c' (%d)>",
493
+
return PyUnicode_FromFormat("<cparam '%c' (%d)>",
495
494
self->tag, self->value.b);
496
-
break;
497
495
case 'h':
498
496
case 'H':
499
-
sprintf(buffer, "<cparam '%c' (%d)>",
497
+
return PyUnicode_FromFormat("<cparam '%c' (%d)>",
500
498
self->tag, self->value.h);
501
-
break;
502
499
case 'i':
503
500
case 'I':
504
-
sprintf(buffer, "<cparam '%c' (%d)>",
501
+
return PyUnicode_FromFormat("<cparam '%c' (%d)>",
505
502
self->tag, self->value.i);
506
-
break;
507
503
case 'l':
508
504
case 'L':
509
-
sprintf(buffer, "<cparam '%c' (%ld)>",
505
+
return PyUnicode_FromFormat("<cparam '%c' (%ld)>",
510
506
self->tag, self->value.l);
511
-
break;
512
507
513
508
case 'q':
514
509
case 'Q':
515
-
sprintf(buffer,
516
-
#ifdef MS_WIN32
517
-
"<cparam '%c' (%I64d)>",
518
-
#else
519
-
"<cparam '%c' (%lld)>",
520
-
#endif
510
+
return PyUnicode_FromFormat("<cparam '%c' (%lld)>",
521
511
self->tag, self->value.q);
522
-
break;
523
512
case 'd':
524
-
sprintf(buffer, "<cparam '%c' (%f)>",
525
-
self->tag, self->value.d);
526
-
break;
527
-
case 'f':
528
-
sprintf(buffer, "<cparam '%c' (%f)>",
529
-
self->tag, self->value.f);
530
-
break;
531
-
513
+
case 'f': {
514
+
PyObject *f = PyFloat_FromDouble((self->tag == 'f') ? self->value.f : self->value.d);
515
+
if (f == NULL) {
516
+
return NULL;
517
+
}
518
+
PyObject *result = PyUnicode_FromFormat("<cparam '%c' (%R)>", self->tag, f);
519
+
Py_DECREF(f);
520
+
return result;
521
+
}
532
522
case 'c':
533
523
if (is_literal_char((unsigned char)self->value.c)) {
534
-
sprintf(buffer, "<cparam '%c' ('%c')>",
524
+
return PyUnicode_FromFormat("<cparam '%c' ('%c')>",
535
525
self->tag, self->value.c);
536
526
}
537
527
else {
538
-
sprintf(buffer, "<cparam '%c' ('\\x%02x')>",
528
+
return PyUnicode_FromFormat("<cparam '%c' ('\\x%02x')>",
539
529
self->tag, (unsigned char)self->value.c);
540
530
}
541
-
break;
542
531
543
532
/* Hm, are these 'z' and 'Z' codes useful at all?
544
533
Shouldn't they be replaced by the functionality of c_string
@@ -547,22 +536,20 @@ PyCArg_repr(PyCArgObject *self)
547
536
case 'z':
548
537
case 'Z':
549
538
case 'P':
550
-
sprintf(buffer, "<cparam '%c' (%p)>",
539
+
return PyUnicode_FromFormat("<cparam '%c' (%p)>",
551
540
self->tag, self->value.p);
552
541
break;
553
542
554
543
default:
555
544
if (is_literal_char((unsigned char)self->tag)) {
556
-
sprintf(buffer, "<cparam '%c' at %p>",
545
+
return PyUnicode_FromFormat("<cparam '%c' at %p>",
557
546
(unsigned char)self->tag, (void *)self);
558
547
}
559
548
else {
560
-
sprintf(buffer, "<cparam 0x%02x at %p>",
549
+
return PyUnicode_FromFormat("<cparam 0x%02x at %p>",
561
550
(unsigned char)self->tag, (void *)self);
562
551
}
563
-
break;
564
552
}
565
-
return PyUnicode_FromString(buffer);
566
553
}
567
554
568
555
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