From f82f941b803b0c28240913eb57b34ab4c6c6b96a Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Thu, 17 Feb 2011 08:56:33 -0800 Subject: Write images to the bmpblock in the order they appear in the yaml. This ensures that equivalent yaml files produce identical bmpblock binaries. BUG=chromium-os:12158 TEST=manual cd src/platform/vboot_reference make make runbmptests Change-Id: Ic8103ff90e57034d72fb3920a6c198c77768f162 Review URL: http://codereview.chromium.org/6533012 --- utility/bmpblk_utility.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'utility/bmpblk_utility.cc') diff --git a/utility/bmpblk_utility.cc b/utility/bmpblk_utility.cc index c9188a8e..742bd9bc 100644 --- a/utility/bmpblk_utility.cc +++ b/utility/bmpblk_utility.cc @@ -189,6 +189,7 @@ void BmpBlockUtil::parse_images(yaml_parser_t *parser) { error("Syntax error in parsing images.\n"); } image_filename = (char*)event.data.scalar.value; + config_.image_names.push_back(image_name); config_.images_map[image_name] = ImageConfig(); config_.images_map[image_name].filename = image_filename; break; @@ -476,11 +477,12 @@ void BmpBlockUtil::pack_bmpblock() { /* Compute the ImageInfo offsets from start of BMPBLOCK. */ uint32_t current_offset = sizeof(BmpBlockHeader) + sizeof(ScreenLayout) * config_.screens_map.size(); - for (StrImageConfigMap::iterator it = config_.images_map.begin(); - it != config_.images_map.end(); - ++it) { - it->second.offset = current_offset; - current_offset += sizeof(ImageInfo) + it->second.data.compressed_size; + for (unsigned int i = 0; i < config_.image_names.size(); ++i) { + string image_name = config_.image_names[i]; + ImageConfig &img = config_.images_map[image_name]; + img.offset = current_offset; + current_offset += sizeof(ImageInfo) + + config_.images_map[image_name].data.compressed_size; /* Make it 4-byte aligned. */ if ((current_offset & 3) > 0) { current_offset = (current_offset & ~3) + 4; -- cgit v1.2.1