| 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; |
| 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 } |