]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Small restructuring of squash_read
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 9 Dec 2010 18:40:11 +0000 (19:40 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 9 Dec 2010 18:40:11 +0000 (19:40 +0100)
grub-core/fs/squash4.c

index 8eca185f3d8a68d654c1d1063146e6fcf74a0662..1a121c2cfe8bb2292d4cedb69a8d01817aee7d4a 100644 (file)
@@ -402,13 +402,12 @@ grub_squash_read (grub_file_t file, char *buf, grub_size_t len)
   grub_uint64_t a;
   struct grub_squash_data *data = file->data;
 
-  a = grub_le_to_cpu32 (data->ino.offset) + file->offset;
   if (grub_le_to_cpu16 (data->ino.fragment) == 0xffff)
     {
       if (grub_le_to_cpu32 (data->ino.chunk))
-       a += grub_le_to_cpu32 (data->ino.chunk);
+       a = grub_le_to_cpu32 (data->ino.chunk);
       else
-       a += sizeof (struct grub_squash_super);
+       a = sizeof (struct grub_squash_super);
     }
   else
     {
@@ -418,10 +417,11 @@ grub_squash_read (grub_file_t file, char *buf, grub_size_t len)
                        * grub_le_to_cpu16 (data->ino.fragment));
       if (err)
        return -1;
-      a += grub_le_to_cpu64 (frag.offset);
-      a += grub_le_to_cpu32 (data->ino.chunk);
+      a = grub_le_to_cpu64 (frag.offset) + grub_le_to_cpu32 (data->ino.chunk);
     }
 
+  a += grub_le_to_cpu32 (data->ino.offset) + file->offset;
+
   err = grub_disk_read (file->device->disk, a >> GRUB_DISK_SECTOR_BITS,
                        a & (GRUB_DISK_SECTOR_SIZE - 1), len, buf);
   if (err)