Richard <news@muppet.plus.com> fixed bug in padding code
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 17 Aug 2008 19:17:24 +0000 (19:17 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 17 Aug 2008 19:17:24 +0000 (19:17 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@923 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/flash/flash.c

index 71d054f5051bde8f4056a8bbc2b932424d66d65e..5193ce9a1e7bfab77b8c90cd84e2c950eb327472 100644 (file)
@@ -1052,10 +1052,9 @@ int flash_write(target_t *target, image_t *image, u32 *written, int erase)
                {
                        u32 size_read;
 
-                       if (buffer_size - run_size <= image->sections[section].size - section_offset)
-                               size_read = buffer_size - run_size;
-                       else
-                               size_read = image->sections[section].size - section_offset;
+                       size_read = run_size - buffer_size;
+                       if (size_read > image->sections[section].size - section_offset)
+                           size_read = image->sections[section].size - section_offset;
 
                        if ((retval = image_read_section(image, section, section_offset,
                                        size_read, buffer + buffer_size, &size_read)) != ERROR_OK || size_read == 0)
@@ -1067,7 +1066,7 @@ int flash_write(target_t *target, image_t *image, u32 *written, int erase)
                        
                        /* see if we need to pad the section */
                        while (padding[section]--)
-                               buffer[size_read++] = 0xff;
+                                (buffer+buffer_size)[size_read++] = 0xff;
                        
                        buffer_size += size_read;
                        section_offset += size_read;