| 390 | |
| 391 | static char *xstrdup(const char *s) { |
| 392 | if (!s) s = ""; |
| 393 | size_t n = strlen(s); |
| 394 | char *p = xmalloc(n + 1); |
| 395 | memcpy(p, s, n + 1); |
| 396 | return p; |
| 397 | } |
| 398 | |
| 399 | static char *xstrndup(const char *s, size_t n) { |
| 400 | char *p = xmalloc(n + 1); |
| 401 | memcpy(p, s, n); |
| 402 | p[n] = '\0'; |
| 403 | return p; |
| 404 | } |
| 405 | |
| 406 | static void *xrealloc(void *ptr, size_t n) { |
no test coverage detected