case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
{
- const char *locale = NULL;
- const char *value = NULL;
+ size_t locale_start;
+ bool found_locale = false;
+ size_t value_start;
for (;;)
{
APPEND (c);
case '[':
/* Finish the key part and start the locale part. */
APPEND (0);
- locale = &buffer[bufpos];
+ found_locale = true;
+ locale_start = bufpos;
for (;;)
{
break;
}
- value = &buffer[bufpos];
+ value_start = bufpos;
for (;;)
{
c = phase2_getc ();
APPEND (0);
tp->type = token_type_pair;
tp->string = xmemdup (buffer, bufpos);
- tp->locale = locale;
- tp->value = value;
+ tp->locale = found_locale ? &buffer[locale_start] : NULL;
+ tp->value = &buffer[value_start];
return;
}
default: