Hi,
Here's a pattern I haven't seen before. This macro is especially hideous
since it make use of the local variable numitems as opposed of items
which is passed as an argument.

Comments? OK?

Index: file.c
===================================================================
RCS file: /cvs/src/bin/csh/file.c,v
retrieving revision 1.26
diff -u -p -r1.26 file.c
--- file.c      21 Jun 2017 19:36:23 -0000      1.26
+++ file.c      21 Jun 2017 19:49:19 -0000
@@ -573,16 +573,6 @@ free_items(Char **items, int numitems)
     free(items);
 }
 
-#define FREE_ITEMS(items) { \
-       sigset_t sigset, osigset;\
-\
-       sigemptyset(&sigset);\
-       sigaddset(&sigset, SIGINT);\
-       sigprocmask(SIG_BLOCK, &sigset, &osigset);\
-       free_items(items, numitems);\
-       sigprocmask(SIG_SETMASK, &osigset, NULL);\
-}
-
 /*
  * Perform a RECOGNIZE or LIST command on string "word".
  */
@@ -671,7 +661,7 @@ again:                              /* search for matches */
        print_by_column(looking_for_lognames ? NULL : tilded_dir,
                        items, numitems);
        if (items != NULL)
-           FREE_ITEMS(items);
+           free_items(items, numitems);
     }
     return (0);
 }

Reply via email to