Репозитории ALT
S: | 2.06-alt16 |
D: | 0.97-alt2 |
5.1: | 0.97-alt5 |
4.1: | 0.97-alt4.M41.1 |
3.0: | 0.95-alt1 |
Группа :: Система/Ядро и оборудование
Пакет: grub
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: grub-0.97-nx-multiinstall.patch
Скачать
Скачать
2006-03-09 Alexandre Oliva <oliva@gnu.org>
* lib/builtins.c (install_blocklist_helper): Move static
last_lenght...
(install_func_context): ... here.
(install_func): Reset it.
Index: grub-0.97/stage2/builtins.c
===================================================================
--- grub-0.97.orig/stage2/builtins.c 2006-03-09 10:26:41.000000000 -0300
+++ grub-0.97/stage2/builtins.c 2006-03-09 11:36:18.000000000 -0300
@@ -1926,11 +1926,13 @@ static struct {
int saved_sector;
int installaddr;
int installlist;
+ int last_length;
char *stage2_first_buffer;
} install_func_context = {
.saved_sector = 0,
.installaddr = 0,
.installlist = 0,
+ .last_length = SECTOR_SIZE,
.stage2_first_buffer = NULL,
};
@@ -1960,19 +1962,19 @@ install_blocklist_helper (int sector, in
int *installlist = &install_func_context.installlist;
char **stage2_first_buffer = &install_func_context.stage2_first_buffer;
/* Was the last sector full? */
- static int last_length = SECTOR_SIZE;
+ int *last_length = &install_func_context.last_length;
if (debug)
printf("[%d]", sector);
- if (offset != 0 || last_length != SECTOR_SIZE)
+ if (offset != 0 || *last_length != SECTOR_SIZE)
{
/* We found a non-sector-aligned data block. */
errnum = ERR_UNALIGNED;
return;
}
- last_length = length;
+ *last_length = length;
if (*((unsigned long *) (*installlist - 4))
+ *((unsigned short *) *installlist) != sector
@@ -2027,7 +2029,11 @@ install_func (char *arg, int flags)
int is_open = 0;
/* If LBA is forced? */
int is_force_lba = 0;
+ int *last_length = &install_func_context.last_length;
+ /* Reset state. */
+ *last_length = SECTOR_SIZE;
+
*stage2_first_buffer = old_sect + SECTOR_SIZE;
#ifdef GRUB_UTIL
/* If the Stage 2 is in a partition mounted by an OS, this will store