From: <no...@so...> - 2001-12-08 07:30:58
|
Bugs item #490537, was opened at 2001-12-07 23:30 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=100599&aid=490537&group_id=599 Category: msc51(8051) target Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: if/else, true case skips subsequent op. Initial Comment: Using the following code, a successful test for the else if () condition results in no increment of the dest pointer. Uncommenting the "dest = dest" reassignment corrects the problem. Enclosed are the assembly listings generated from code without (.bad file) and with the re-assignment (.good file). I have tried to reproduce this in a small test program but it seems to need the whole code present to reproduce this. I am using a recent cvs update version (Nov 24) of sdcc. void lcd_display_filename(const xdata unsigned char *filename) { xdata unsigned char* source; xdata unsigned char* dest; // Kill any pending timer0 interrupts clear_timer(0); // make local copy (pl_name will be invalid on exit) // check length & truncate. convert '_' to ' '. source = filename; dest = filebuf; filebuf_len = 0; while(*source != '\0') { filebuf_len++; if (filebuf_len >= FILEBUF_MAX) { break; } else if (*source == '_') { *dest = ' '; } else { *dest = *source; } // dest = dest; source++; dest++; } *dest = '\0'; ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=100599&aid=490537&group_id=599 |