diff packages/redboot/current/src/flash.c @ 2007:adbedd54ee7b

* src/flash.c (find_free): Maintain sort order when splitting chunks.
author asl
date Wed, 29 Jun 2005 19:41:46 +0000
parents 20fee0cef763
children ef1d669d4888
line wrap: on
line diff
--- a/packages/redboot/current/src/flash.c
+++ b/packages/redboot/current/src/flash.c
@@ -591,8 +591,12 @@ find_free(struct free_chunk *chunks)
                     } else {
                         // Split chunk into two parts
                         if ((img->flash_base+img->size) < (CYG_ADDRESS)fis_end) {
-                            chunks[num_chunks].start = img->flash_base + img->size;
-                            chunks[num_chunks].end = chunks[idx].end;
+                            int j;
+                            // make room for new chunk
+                            for (j = num_chunks; j > (idx+1); j--)
+                                chunks[j] = chunks[j-1];
+                            chunks[idx+1].start = img->flash_base + img->size;
+                            chunks[idx+1].end = chunks[idx].end;
                             if (++num_chunks == CYGDAT_REDBOOT_FIS_MAX_FREE_CHUNKS) {
                                 diag_printf("Warning: too many free chunks\n");
                                 return num_chunks;