ucx/utils.c

changeset 173
31a8682fffb7
parent 150
1cf2eabf94ed
child 174
bbfe511cfddb
equal deleted inserted replaced
172:7084e8e8433c 173:31a8682fffb7
210 #ifdef va_copy 210 #ifdef va_copy
211 va_list ap2; 211 va_list ap2;
212 va_copy(ap2, ap); 212 va_copy(ap2, ap);
213 int ret = vsnprintf(buf, UCX_PRINTF_BUFSIZE, fmt, ap); 213 int ret = vsnprintf(buf, UCX_PRINTF_BUFSIZE, fmt, ap);
214 if (ret > 0 && ret < UCX_PRINTF_BUFSIZE) { 214 if (ret > 0 && ret < UCX_PRINTF_BUFSIZE) {
215 s.ptr = (char*)a->malloc(a->pool, ret + 1); 215 s.ptr = (char*)almalloc(a, ret + 1);
216 s.length = (size_t)ret; 216 s.length = (size_t)ret;
217 memcpy(s.ptr, buf, ret); 217 memcpy(s.ptr, buf, ret);
218 s.ptr[s.length] = '\0'; 218 s.ptr[s.length] = '\0';
219 } else if (ret == INT_MAX) { 219 } else if (ret == INT_MAX) {
220 errno = ENOMEM; 220 errno = ENOMEM;
221 } else { 221 } else {
222 int len = ret + 1; 222 int len = ret + 1;
223 s.ptr = (char*)a->malloc(a->pool, len); 223 s.ptr = (char*)almalloc(a, len);
224 ret = vsnprintf(s.ptr, len, fmt, ap2); 224 ret = vsnprintf(s.ptr, len, fmt, ap2);
225 if (ret < 0) { 225 if (ret < 0) {
226 free(s.ptr); 226 free(s.ptr);
227 s.ptr = NULL; 227 s.ptr = NULL;
228 } else { 228 } else {
230 } 230 }
231 } 231 }
232 #else 232 #else
233 int ret = vsnprintf(buf, UCX_PRINTF_BUFSIZE, fmt, ap); 233 int ret = vsnprintf(buf, UCX_PRINTF_BUFSIZE, fmt, ap);
234 if (ret > 0 && ret < UCX_PRINTF_BUFSIZE) { 234 if (ret > 0 && ret < UCX_PRINTF_BUFSIZE) {
235 s.ptr = (char*)a->malloc(a->pool, ret + 1); 235 s.ptr = (char*)almalloc(a, ret + 1);
236 s.length = (size_t)ret; 236 s.length = (size_t)ret;
237 memcpy(s.ptr, buf, ret); 237 memcpy(s.ptr, buf, ret);
238 s.ptr[s.length] = '\0'; 238 s.ptr[s.length] = '\0';
239 } else { 239 } else {
240 errno = ENOMEM; 240 errno = ENOMEM;

mercurial