]> wimlib.net Git - wimlib/blobdiff - src/xml.c
lzx-decompress.c: One fewer branch in undo_call_insn_translation()
[wimlib] / src / xml.c
index 7ff9c615cda47af72b6366d18ce2e10fe5e39dbb..d0975d9599e6f2f390677c72bc82d44469b307d5 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -90,6 +90,9 @@ struct image_info {
        tchar *display_description;
        tchar *flags;
        bool wimboot;
+
+       /* Note: must update clone_image_info() if adding new fields here  */
+
        struct wim_lookup_table *lookup_table; /* temporary field */
 };
 
@@ -572,8 +575,9 @@ xml_read_wim_info(const xmlNode *wim_node, struct wim_info **wim_info_ret)
        num_images = 0;
        for_node_child(wim_node, child) {
                if (node_is_element(child) && node_name_is(child, "IMAGE")) {
-                       if (num_images == INT_MAX) {
-                               return WIMLIB_ERR_IMAGE_COUNT;
+                       if (unlikely(num_images == MAX_IMAGES)) {
+                               ret = WIMLIB_ERR_IMAGE_COUNT;
+                               goto err;
                        }
                        num_images++;
                }
@@ -623,7 +627,8 @@ xml_read_wim_info(const xmlNode *wim_node, struct wim_info **wim_info_ret)
                                ERROR("WIM images are not indexed [1...%d] "
                                      "in XML data as expected",
                                      num_images);
-                               return WIMLIB_ERR_IMAGE_COUNT;
+                               ret = WIMLIB_ERR_IMAGE_COUNT;
+                               goto err;
                        }
                }
 
@@ -999,6 +1004,8 @@ clone_windows_info(const struct windows_info *old, struct windows_info *new)
 {
        int ret;
 
+       new->arch = old->arch;
+
        ret = dup_strings_from_specs(old, new, windows_info_xml_string_specs,
                                     ARRAY_LEN(windows_info_xml_string_specs));
        if (ret)
@@ -1061,6 +1068,7 @@ clone_image_info(const struct image_info *old, struct image_info *new)
                if (ret)
                        return ret;
        }
+       new->wimboot = old->wimboot;
        return 0;
 }