- {
- sz *= 2;
- tokens = xrealloc (tokens, sz * sizeof (char *));
- lengths = xrealloc (lengths, sz * sizeof (long));
- }
-
- if (token_length < 0)
- {
- /* don't increment n_tokens for NULL entry */
- tokens[n_tokens] = NULL;
- lengths[n_tokens] = -1;
- break;
- }
- tmp = xmalloc ((token_length + 1) * sizeof (char));
+ {
+ tokens = x2nrealloc (tokens, &sz, sizeof *tokens);
+ lengths = xnrealloc (lengths, sz, sizeof *lengths);
+ }
+
+ if (token_length == (size_t) -1)
+ {
+ /* don't increment n_tokens for NULL entry */
+ tokens[n_tokens] = NULL;
+ lengths[n_tokens] = 0;
+ break;
+ }
+ tmp = xnmalloc (token_length + 1, sizeof *tmp);