* strndup with a twist: len < 0 means len = strlen(str) */
| 2474 | * strndup with a twist: len < 0 means len = strlen(str) |
| 2475 | */ |
| 2476 | static char * |
| 2477 | xo_strndup (const char *str, ssize_t len) |
| 2478 | { |
| 2479 | if (len < 0) |
| 2480 | len = strlen(str); |
| 2481 | |
| 2482 | char *cp = xo_realloc(NULL, len + 1); |
| 2483 | if (cp) { |
| 2484 | memcpy(cp, str, len); |
| 2485 | cp[len] = '\0'; |
| 2486 | } |
| 2487 | |
| 2488 | return cp; |
| 2489 | } |
| 2490 | |
| 2491 | /** |
| 2492 | * Record a leading prefix for the XPath we generate. This allows the |
no test coverage detected