[tuxdroid-svn] r207 - firmware/tuxup/trunk
Status: Beta
Brought to you by:
ks156
From: jaguarondi <c2m...@c2...> - 2007-03-23 02:09:17
|
Author: jaguarondi Date: 2007-03-23 03:08:57 +0100 (Fri, 23 Mar 2007) New Revision: 207 Modified: firmware/tuxup/trunk/bootloader.c Log: - BUG: fixed bug #1 Segfault when a hex file contained a line of data that ended exactly at the end of a segment. The segmnt was never sent to the USB in this case. I'm not sure I didn't created a new bug by changing this, needs more testing. Modified: firmware/tuxup/trunk/bootloader.c =================================================================== --- firmware/tuxup/trunk/bootloader.c 2007-03-23 02:05:48 UTC (rev 206) +++ firmware/tuxup/trunk/bootloader.c 2007-03-23 02:08:57 UTC (rev 207) @@ -334,7 +334,9 @@ /* Last segment, fill with '0xFF', send and return */ if (lastSeg) { - //printf("--last segment --\n"); +#if (PRINT_DATA) + printf("--last segment --\n"); +#endif while (parser->currAddr < (parser->segAddr + parser->segLen)) /* fill with '0' until the end of segment */ { fillSegment(parser, 0xFF); @@ -346,7 +348,9 @@ /* resynchronise currAddr and addr */ while(parser->currAddr != parsedData->addr) { - //printf("--synchronisation--\n"); +#if (PRINT_DATA) + printf("--synchronisation--\n"); +#endif if (!parser->inSeg) { parser->currAddr = parsedData->addr & ~(parser->segLen - 1); /* set current address at the segment start by zeroing lower bits */ @@ -364,24 +368,28 @@ while(parser->currAddr < (parsedData->addr + parsedData->dataLen)) { - //printf("--loop--"); +#if (PRINT_DATA) + printf("--loop--"); +#endif if (!parser->inSeg) /* start a new segment if needed */ { - //printf("--new segment--\n"); +#if (PRINT_DATA) + printf("--new segment--\n"); +#endif parser->inSeg = TRUE; parser->segAddr = parser->currAddr; /* set address of the segment start */ startSegment(parser); } + /* store data in segmentData */ + fillSegment(parser, parsedData->data[dataIdx]); + dataIdx++; if (parser->currAddr == (parser->segAddr + parser->segLen)) /* end of segment */ { - //printf("--end segment--"); +#if (PRINT_DATA) + printf("--end segment--"); +#endif finishSegment(parser); } - else /* store data in segmentData */ - { - fillSegment(parser, parsedData->data[dataIdx]); - dataIdx++; - } } return TRUE; |