+2003-12-18 Erik Petrich <epetrich@ivorytower.norman.ok.us>
+
+ * src/SDCCast.c (createIvalCharPtr),
+ * src/SDCCglue.c (printChar): fixed bug #862241 (an error in my fix for
+ bug #753752)
+ * support/regression/tests/nullstring.c: tests for these two bugs
+
2003-12-18 Erik Petrich <epetrich@ivorytower.norman.ok.us>
* support/Util/SDCCerr.h,
char *s = SPEC_CVAL (iexpr->etype).v_char;
int i = 0;
int size = getSize (iexpr->ftype);
+ int symsize = getSize (type);
+
+ if (size>symsize)
+ {
+ if (size>(symsize+1))
+ werrorfl (iexpr->filename, iexpr->lineno, W_EXCESS_INITIALIZERS,
+ "string", sym->opval.val->sym->name);
+ size = symsize;
+ }
for (i=0;i<size;i++)
{
else
len = 0;
}
+ while (pplen < plen)
+ {
+ tfprintf (ofile, "\t!db !constbyte\n", 0);
+ pplen++;
+ }
}
/*-----------------------------------------------------------------*/
--- /dev/null
+/** Null character in string tests.
+
+ storage: data, xdata, code,
+*/
+#include <testfwk.h>
+
+#if defined(PORT_HOST) || defined(SDCC_z80) || defined(SDCC_gbz80)
+# define data
+# define xdata
+# define code
+#endif
+
+{storage} char string1[] = "";
+{storage} char string2[] = "a\0b\0c";
+{storage} char string3[5] = "a\0b\0c";
+
+void
+testStringArray(void)
+{
+ /* Make sure the strings are the correct size */
+ /* and have the terminating null character */
+ ASSERT(sizeof(string1)==1);
+ ASSERT(sizeof(string2)==6);
+ ASSERT(sizeof(string3)==5);
+ ASSERT(string1[0]==0);
+ ASSERT(string2[5]==0);
+
+ ASSERT(string2[0]=='a');
+ ASSERT(string2[2]=='b');
+ ASSERT(string2[4]=='c');
+
+}
+
+void
+testStringConst(void)
+{
+ char * constStr1 = "";
+ char * constStr2 = "a\0b\0c";
+
+ ASSERT (constStr1[0]==0);
+ ASSERT (constStr2[5]==0);
+}