Blame util-linux-2.13-cramfs-maxentries.patch
|
|
08be59b |
--- util-linux-2.13-pre5/disk-utils/mkfs.cramfs.c.maxentries 2005-10-20 23:46:19.000000000 +0200
|
|
|
08be59b |
+++ util-linux-2.13-pre5/disk-utils/mkfs.cramfs.c 2005-10-20 23:54:07.000000000 +0200
|
|
|
08be59b |
@@ -471,11 +471,13 @@
|
|
|
08be59b |
* entries, using a stack to remember the directories
|
|
|
08be59b |
* we've seen.
|
|
|
08be59b |
*/
|
|
|
08be59b |
-#define MAXENTRIES (100)
|
|
|
08be59b |
static unsigned int write_directory_structure(struct entry *entry, char *base, unsigned int offset)
|
|
|
08be59b |
{
|
|
|
08be59b |
int stack_entries = 0;
|
|
|
08be59b |
- struct entry *entry_stack[MAXENTRIES];
|
|
|
08be59b |
+ int stack_size = 64;
|
|
|
08be59b |
+ struct entry **entry_stack;
|
|
|
08be59b |
+
|
|
|
08be59b |
+ entry_stack = xmalloc(stack_size * sizeof(struct entry *));
|
|
|
08be59b |
|
|
|
08be59b |
for (;;) {
|
|
|
08be59b |
int dir_start = stack_entries;
|
|
|
08be59b |
@@ -508,13 +510,13 @@
|
|
|
08be59b |
if (verbose)
|
|
|
08be59b |
printf(" %s\n", entry->name);
|
|
|
08be59b |
if (entry->child) {
|
|
|
08be59b |
- if (stack_entries >= MAXENTRIES) {
|
|
|
08be59b |
- fprintf(stderr,
|
|
|
08be59b |
- _("Exceeded MAXENTRIES. Raise"
|
|
|
08be59b |
- " this value in mkcramfs.c "
|
|
|
08be59b |
- "and recompile. Exiting.\n")
|
|
|
08be59b |
- );
|
|
|
08be59b |
- exit(8);
|
|
|
08be59b |
+ if (stack_entries >= stack_size) {
|
|
|
08be59b |
+ stack_size *= 2;
|
|
|
08be59b |
+ entry_stack = realloc(entry_stack, stack_size * sizeof(struct entry *));
|
|
|
08be59b |
+ if (!entry_stack) {
|
|
|
08be59b |
+ perror(NULL);
|
|
|
08be59b |
+ exit(8); /* out of memory */
|
|
|
08be59b |
+ }
|
|
|
08be59b |
}
|
|
|
08be59b |
entry_stack[stack_entries] = entry;
|
|
|
08be59b |
stack_entries++;
|
|
|
08be59b |
@@ -551,6 +553,7 @@
|
|
|
08be59b |
printf("'%s':\n", entry->name);
|
|
|
08be59b |
entry = entry->child;
|
|
|
08be59b |
}
|
|
|
08be59b |
+ free(entry_stack);
|
|
|
08be59b |
return offset;
|
|
|
08be59b |
}
|
|
|
08be59b |
|