diff options
Diffstat (limited to 'lib/xarray.c')
-rw-r--r-- | lib/xarray.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/xarray.c b/lib/xarray.c index 2cc3798672f7..6be3acbb861f 100644 --- a/lib/xarray.c +++ b/lib/xarray.c | |||
@@ -767,10 +767,12 @@ void *xas_store(struct xa_state *xas, void *entry) | |||
767 | void *first, *next; | 767 | void *first, *next; |
768 | bool value = xa_is_value(entry); | 768 | bool value = xa_is_value(entry); |
769 | 769 | ||
770 | if (entry) | 770 | if (entry) { |
771 | first = xas_create(xas, !xa_is_node(entry)); | 771 | bool allow_root = !xa_is_node(entry) && !xa_is_zero(entry); |
772 | else | 772 | first = xas_create(xas, allow_root); |
773 | } else { | ||
773 | first = xas_load(xas); | 774 | first = xas_load(xas); |
775 | } | ||
774 | 776 | ||
775 | if (xas_invalid(xas)) | 777 | if (xas_invalid(xas)) |
776 | return first; | 778 | return first; |