File genisoimage-multi-extent-fix-bnc615177.patch of Package wodim.10091

--- genisoimage/write.c
+++ genisoimage/write.c
@@ -1013,6 +1013,40 @@
 		set_733((char *) s_entry->isorec.extent, start_extent);
 
 		start_extent += ISO_BLOCKS(s_entry->size);
+#ifdef USE_LARGEFILES
+		/*
+		 * Update the entries for multi-section files
+		 * as we now know the starting extent numbers.
+		 */
+		if (s_entry->de_flags & MULTI_EXTENT) {
+			struct directory_entry *s_e;
+
+			/*
+			 * The directory is sorted, so we should
+			 * see s_entry->mxpart == 1 first.
+			 */
+			if (s_entry->mxpart != 1) {
+				comerrno(EX_BAD,
+				"Panic: Multi extent parts for %s not in order.\n",
+				s_entry->whole_name);
+			}
+			s_entry->mxroot->starting_block = s_entry->starting_block;
+			/*
+			 * Set the mxroot (mxpart == 0) to allow
+			 * the UDF code to fetch the starting
+			 * extent number.
+			 */
+			set_733((char *) s_entry->mxroot->isorec.extent, s_entry->mxroot->starting_block);
+			for (s_e = s_entry->next;
+			    s_e && s_e->mxroot == s_entry->mxroot;
+						s_e = s_e->next) {
+				if (s_e->mxpart == 0)
+					continue;
+				set_733((char *) s_e->isorec.extent, start_extent);
+				start_extent += ISO_BLOCKS(s_e->size);
+			}
+		}
+#endif
 #ifdef DVD_VIDEO
 		/*
 		 * Shouldn't this be done for every type of sort? Otherwise
openSUSE Build Service is sponsored by