* src/z80/gen.c: fixed bug #1294691: nested ifs make compiler crash;
[fw/sdcc] / support / regression / tests / driverstruct.c
index f6219e6149236e478574ee2903a63a37ebc595a2..9521a28c4aae10230116671e29539e7d62fe2975 100644 (file)
@@ -4,7 +4,7 @@
 #include <testfwk.h>
 
 /* Set to one to show the bug */
-#if 0
+#if 1
 #define NAME(_a)       _a
 #else
 #define NAME(_a)
@@ -17,16 +17,16 @@ typedef unsigned char uchar;
 
 typedef struct s_devsw {
        uchar   minors;         /* # of minor device numbers */
-       int     (*dev_init)(uchar NAME(minor));
-       int     (*dev_open)(uchar NAME(minor));
-       int     (*dev_close)(uchar NAME(minor));
-       int     (*dev_read)(uchar NAME(minor), uchar NAME(w));
-       int     (*dev_write)(uchar NAME(minor), uchar NAME(w));
-       int     (*dev_ioctl)(uchar NAME(minor), int cmd, void *data);
+       int     (*dev_init)(uchar NAME(minor)) REENTRANT;
+       int     (*dev_open)(uchar NAME(minor)) REENTRANT;
+       int     (*dev_close)(uchar NAME(minor)) REENTRANT;
+       int     (*dev_read)(uchar NAME(minor), uchar NAME(w)) REENTRANT;
+       int     (*dev_write)(uchar NAME(minor), uchar NAME(w)) REENTRANT;
+       int     (*dev_ioctl)(uchar NAME(minor), int cmd, void *data) REENTRANT;
 } devsw_t;
 
 static int
-_init(uchar minor)
+_init(uchar minor) REENTRANT
 {
   return minor;
 }
@@ -38,8 +38,13 @@ static devsw_t _sillyDriver = {
 };
 
 int
-initProxy(void)
+initProxy(devsw_t *pdrv)
 {
-  return (*_sillyDriver.dev_init)(5);
+  return (*pdrv->dev_init)(5);
 }
 
+void
+testDriverStruct(void)
+{
+  initProxy(&_sillyDriver);
+}