diff -r ed134fdfe95f -r 275a4428c13b librazor/merger.c --- a/librazor/merger.c Wed Apr 28 11:59:02 2010 +0100 +++ b/librazor/merger.c Tue Mar 27 21:32:46 2012 +0100 @@ -1,7 +1,7 @@ /* * Copyright (C) 2008 Kristian Høgsberg * Copyright (C) 2008 Red Hat, Inc - * Copyright (C) 2009, 2010 J. Ali Harlow + * Copyright (C) 2009-2011 J. Ali Harlow * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,9 +47,18 @@ struct razor_merger *merger; int count; size_t size; + uint32_t header_version; merger = zalloc(sizeof *merger); merger->set = razor_set_create(); + if (set1->packages.size) { + header_version = razor_set_get_header_version(set1); + if (set2->packages.size && + razor_set_get_header_version(set2) > header_version) + header_version = razor_set_get_header_version(set2); + } else + header_version = razor_set_get_header_version(set2); + razor_set_set_header_version(merger->set, header_version); hashtable_init(&merger->table, &merger->set->string_pool); hashtable_init(&merger->file_table, &merger->set->file_string_pool); hashtable_init(&merger->details_table, @@ -592,16 +601,24 @@ switch (script) { case RAZOR_PROPERTY_PREUN: - assert(pool[package->preun.program] == '\0'); - assert(pool[package->preun.body] == '\0'); - package->preun.program = p; - package->preun.body = b; + if (package->preun.program != p) { + assert(pool[package->preun.program] == '\0'); + package->preun.program = p; + } + if (package->preun.body != b) { + assert(pool[package->preun.body] == '\0'); + package->preun.body = b; + } break; case RAZOR_PROPERTY_POSTUN: - assert(pool[package->postun.program] == '\0'); - assert(pool[package->postun.body] == '\0'); - package->postun.program = p; - package->postun.body = b; + if (package->postun.program != p) { + assert(pool[package->postun.program] == '\0'); + package->postun.program = p; + } + if (package->postun.body != b) { + assert(pool[package->postun.body] == '\0'); + package->postun.body = b; + } break; default: break;