summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture/pr55684.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/pr55684.c')
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr55684.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr55684.c b/gcc/testsuite/gcc.dg/torture/pr55684.c
new file mode 100644
index 0000000000..7002a3737f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr55684.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+
+typedef struct _IO_FILE FILE;
+unsigned long int strtoul(const char *, char **, int);
+char *fgets(char *, int, FILE *);
+struct ihexrec {
+ unsigned char reclen;
+ unsigned char data[256];
+};
+static void srec_readrec(struct ihexrec * srec, char * rec)
+{
+ int i, j;
+ char buf[8];
+ int offset = 0, len;
+ char * e;
+ for (i=0; j<srec->reclen; j++)
+ {
+ if (offset+2 > len)
+ return;
+ for (i=0; i<2; i++)
+ buf[i] = rec[offset++];
+ srec->data[j] = strtoul(buf, &e, 16);
+ }
+ for (i=0; i<2; i++)
+ buf[i] = rec[offset++];
+}
+void srec2b(FILE *inf)
+{
+ char buffer[256];
+ struct ihexrec srec;
+ while (fgets(buffer,256,inf)!=(void *)0)
+ srec_readrec(&srec, buffer);
+}