I have found an error when comparing two variables. No matter of the values, it always gives FALSE. In this app an error happens in line 110 when comparing two variables. It's been compiled for a 16F877 PIC with SDCC version (compiled from repository): SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.8.5 #5276 (Nov 26 2008) (UNIX) The error is here: ========== temete3.c, from line 109 to 116 ===== // This reads memory until it gets to the correct language. for (i=0; i>language; i++) { while (text[0] != 0) { text[0] = SerialReadPostIncr(); } } ========= It's being called with this code: ========= temete1.c, from line 203 to 204: ===== language=I18N_FR; PrintLineAlignXYI18n(I18N_TOTAL_TIME_H, I18N_TOTAL_TIME_L, 26, 8, ALIGN_LEFT, NORMAL); ========= I attach some files so you can give it a look. The Makefile specifies how I compile the sources. Don't hesitate to ask me for the complete project's code. I'm working on a test suite, but I'm not yet able to reproduce the error with less code. Thank you -- Néstor +34 687 96 74 81 |
From: Raphael N. <rn...@we...> - 2009-03-24 12:40:28
|
Dear Néstor, > // This reads memory until it gets to the correct language. > for (i=0; i>language; i++) > { > while (text[0] != 0) > { > text[0] = SerialReadPostIncr(); > } > } Did you mean `for (i=0; i < language; i++)' with i LESS THAN language here?!? I did not even try to run the code, but from a quick glance at the code I do not quite understand the intention of this fragment. With i>language and language being 0/1/2 as per I18N_xx, the loop will never be entered: for (i=0; i>0/1/2; i++) { /* something */ } Best regards, Raphael |
From: Néstor <nes...@gm...> - 2009-03-24 14:32:27
|
Dear Raphael, On Tue, Mar 24, 2009 at 1:40 PM, Raphael Neider <rn...@we...> wrote: > Dear Néstor, > >> // This reads memory until it gets to the correct language. >> for (i=0; i>language; i++) >> { >> while (text[0] != 0) >> { >> text[0] = SerialReadPostIncr(); >> } >> } > > Did you mean `for (i=0; i < language; i++)' with i LESS THAN language > here?!? Yes. For instance, when i=0 and language=2 (French), it fails. > I did not even try to run the code, but from a quick glance at the code I > do not quite understand the intention of this fragment. With i>language > and language being 0/1/2 as per I18N_xx, the loop will never be entered: > for (i=0; i>0/1/2; i++) { /* something */ } You are right: that's my intention, it's not always needed to enter the loop. This function reads I2C serial memory in a linear way: there are many texts in different languages, separated by a '0x00' between languages and '0xff' between different texts. First it comes Spanish translation, for example, "Hola", then '0x00', then English translation, "Hello", then '0x00', then French translation, "Aló", and finally '0xff' This function reads through and skips all the Spanish translation if you select English. Or it skips both languages to start reading and printing out French if you select French. The important thing is that only three parameters must be taken into account: Memory High and Low addresses for a particular text, and which language you like the text to be in.This would make things a bit easier, it it worked!! BTW, if you put MORE THAN instead of LESS THAN, it does not work neither. Thank you > > Best regards, > Raphael > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Sdcc-user mailing list > Sdc...@li... > https://lists.sourceforge.net/lists/listinfo/sdcc-user > -- Néstor +34 687 96 74 81 |
From: Néstor <nes...@gm...> - 2009-03-25 12:07:42
|
Last news, I have debugged the application, and the problem is not with the comparison. I'm sending another email to clarify this and ask for help in a different thread. Thank you. On Tue, Mar 24, 2009 at 3:32 PM, Néstor <nes...@gm...> wrote: > Dear Raphael, > > On Tue, Mar 24, 2009 at 1:40 PM, Raphael Neider <rn...@we...> wrote: >> Dear Néstor, >> >>> // This reads memory until it gets to the correct language. >>> for (i=0; i>language; i++) >>> { >>> while (text[0] != 0) >>> { >>> text[0] = SerialReadPostIncr(); >>> } >>> } >> >> Did you mean `for (i=0; i < language; i++)' with i LESS THAN language >> here?!? > > Yes. For instance, when i=0 and language=2 (French), it fails. > >> I did not even try to run the code, but from a quick glance at the code I >> do not quite understand the intention of this fragment. With i>language >> and language being 0/1/2 as per I18N_xx, the loop will never be entered: >> for (i=0; i>0/1/2; i++) { /* something */ } > > You are right: that's my intention, it's not always needed to enter the loop. > > This function reads I2C serial memory in a linear way: there are many > texts in different languages, separated by a '0x00' between languages > and '0xff' between different texts. First it comes Spanish > translation, for example, "Hola", then '0x00', then English > translation, "Hello", then '0x00', then French translation, "Aló", and > finally '0xff' > > This function reads through and skips all the Spanish translation if > you select English. Or it skips both languages to start reading and > printing out French if you select French. The important thing is that > only three parameters must be taken into account: Memory High and Low > addresses for a particular text, and which language you like the text > to be in.This would make things a bit easier, it it worked!! > > BTW, if you put MORE THAN instead of LESS THAN, it does not work neither. > > Thank you > >> >> Best regards, >> Raphael >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Sdcc-user mailing list >> Sdc...@li... >> https://lists.sourceforge.net/lists/listinfo/sdcc-user >> > > > > -- > Néstor > +34 687 96 74 81 > -- Néstor +34 687 96 74 81 |