src/printf.c

changeset 1318
12fa1d37fe48
parent 1285
7acbaa74fbd0
child 1319
aa1f580f8f59
equal deleted inserted replaced
1317:eeb2fc3850e2 1318:12fa1d37fe48
66 } else if (ret < CX_PRINTF_SBO_SIZE) { 66 } else if (ret < CX_PRINTF_SBO_SIZE) {
67 va_end(ap2); 67 va_end(ap2);
68 return (int) wfc(buf, 1, ret, stream); 68 return (int) wfc(buf, 1, ret, stream);
69 } else { 69 } else {
70 int len = ret + 1; 70 int len = ret + 1;
71 char *newbuf = malloc(len); 71 char *newbuf = cxMalloc(cxDefaultAllocator, len);
72 if (!newbuf) { // LCOV_EXCL_START 72 if (!newbuf) { // LCOV_EXCL_START
73 va_end(ap2); 73 va_end(ap2);
74 return -1; 74 return -1;
75 } // LCOV_EXCL_STOP 75 } // LCOV_EXCL_STOP
76 76
77 ret = vsnprintf(newbuf, len, fmt, ap2); 77 ret = vsnprintf(newbuf, len, fmt, ap2);
78 va_end(ap2); 78 va_end(ap2);
79 if (ret > 0) { 79 if (ret > 0) {
80 ret = (int) wfc(newbuf, 1, ret, stream); 80 ret = (int) wfc(newbuf, 1, ret, stream);
81 } 81 }
82 free(newbuf); 82 cxFree(cxDefaultAllocator, newbuf);
83 } 83 }
84 return ret; 84 return ret;
85 } 85 }
86 86
87 cxmutstr cx_asprintf_a( 87 cxmutstr cx_asprintf_a(
119 int len = ret + 1; 119 int len = ret + 1;
120 s.ptr = cxMalloc(a, len); 120 s.ptr = cxMalloc(a, len);
121 if (s.ptr) { 121 if (s.ptr) {
122 ret = vsnprintf(s.ptr, len, fmt, ap2); 122 ret = vsnprintf(s.ptr, len, fmt, ap2);
123 if (ret < 0) { 123 if (ret < 0) {
124 free(s.ptr); 124 cxFree(a, s.ptr);
125 s.ptr = NULL; 125 s.ptr = NULL;
126 } else { 126 } else {
127 s.length = (size_t) ret; 127 s.length = (size_t) ret;
128 } 128 }
129 } 129 }

mercurial