/* Pull off the leading array or object element, returning
a copy in an allocated string. Update the list pointer.
-The element may itself be an abject or array.
+The element may itself be an object or array.
+Return NULL when the list is empty.
*/
uschar *
case '}': object_depth--; break;
}
*list = *s ? s+1 : s;
+if (item == s) return NULL;
item = string_copyn(item, s - item);
DEBUG(D_expand) debug_printf_indent(" json ele: '%s'\n", item);
return US item;
}
while (field_number > 0 && (item = json_nextinlist(&list)))
field_number--;
- s = item;
- lookup_value = s;
- while (*s) s++;
- while (--s >= lookup_value && isspace(*s)) *s = '\0';
+ if ((lookup_value = s = item))
+ {
+ while (*s) s++;
+ while (--s >= lookup_value && isspace(*s)) *s = '\0';
+ }
}
else
{