There's no way to figure out when the labels end when the count is wrong,
so this has to be an error.
   label_cnt = read_int (r);
 
   if (size_overflow_p (xtimes (label_cnt, sizeof *labels)))
-    {
-      sys_warn (r, _("Invalid number of labels: %d.  Ignoring labels."),
-                label_cnt);
-      label_cnt = 0;
-    }
+    sys_error (r, _("Invalid number of labels %d."), label_cnt);
 
   /* Read each value/label tuple into labels[]. */
   labels = pool_nalloc (subpool, label_cnt, sizeof *labels);