src/printf.c

changeset 1490
30ea9885cf04
parent 1319
aa1f580f8f59
equal deleted inserted replaced
1489:185dc2a4b45c 1490:30ea9885cf04
59 char buf[CX_PRINTF_SBO_SIZE]; 59 char buf[CX_PRINTF_SBO_SIZE];
60 va_list ap2; 60 va_list ap2;
61 va_copy(ap2, ap); 61 va_copy(ap2, ap);
62 int ret = vsnprintf(buf, CX_PRINTF_SBO_SIZE, fmt, ap); 62 int ret = vsnprintf(buf, CX_PRINTF_SBO_SIZE, fmt, ap);
63 if (ret < 0) { 63 if (ret < 0) {
64 // LCOV_EXCL_START
64 va_end(ap2); 65 va_end(ap2);
65 return ret; 66 return ret;
67 // LCOV_EXCL_STOP
66 } else if (ret < CX_PRINTF_SBO_SIZE) { 68 } else if (ret < CX_PRINTF_SBO_SIZE) {
67 va_end(ap2); 69 va_end(ap2);
68 return (int) wfc(buf, 1, ret, stream); 70 return (int) wfc(buf, 1, ret, stream);
69 } else { 71 } else {
70 int len = ret + 1; 72 int len = ret + 1;
119 int len = ret + 1; 121 int len = ret + 1;
120 s.ptr = cxMalloc(a, len); 122 s.ptr = cxMalloc(a, len);
121 if (s.ptr) { 123 if (s.ptr) {
122 ret = vsnprintf(s.ptr, len, fmt, ap2); 124 ret = vsnprintf(s.ptr, len, fmt, ap2);
123 if (ret < 0) { 125 if (ret < 0) {
126 // LCOV_EXCL_START
124 cxFree(a, s.ptr); 127 cxFree(a, s.ptr);
125 s.ptr = NULL; 128 s.ptr = NULL;
129 // LCOV_EXCL_STOP
126 } else { 130 } else {
127 s.length = (size_t) ret; 131 s.length = (size_t) ret;
128 } 132 }
129 } 133 }
130 } 134 }
160 unsigned newlen = ret + 1; 164 unsigned newlen = ret + 1;
161 char *ptr = cxRealloc(alloc, *str, newlen); 165 char *ptr = cxRealloc(alloc, *str, newlen);
162 if (ptr) { 166 if (ptr) {
163 int newret = vsnprintf(ptr, newlen, fmt, ap2); 167 int newret = vsnprintf(ptr, newlen, fmt, ap2);
164 if (newret < 0) { 168 if (newret < 0) {
165 cxFree(alloc, ptr); 169 cxFree(alloc, ptr); // LCOV_EXCL_LINE
166 } else { 170 } else {
167 *len = newlen; 171 *len = newlen;
168 *str = ptr; 172 *str = ptr;
169 ret = newret; 173 ret = newret;
170 } 174 }
205 unsigned newlen = ret + 1; 209 unsigned newlen = ret + 1;
206 char *ptr = cxMalloc(alloc, newlen); 210 char *ptr = cxMalloc(alloc, newlen);
207 if (ptr) { 211 if (ptr) {
208 int newret = vsnprintf(ptr, newlen, fmt, ap2); 212 int newret = vsnprintf(ptr, newlen, fmt, ap2);
209 if (newret < 0) { 213 if (newret < 0) {
210 cxFree(alloc, ptr); 214 cxFree(alloc, ptr); // LCOV_EXCL_LINE
211 } else { 215 } else {
212 *len = newlen; 216 *len = newlen;
213 *str = ptr; 217 *str = ptr;
214 ret = newret; 218 ret = newret;
215 } 219 }

mercurial