summaryrefslogtreecommitdiff
path: root/lang/qscheme/files/patch-unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'lang/qscheme/files/patch-unix.c')
-rw-r--r--lang/qscheme/files/patch-unix.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/lang/qscheme/files/patch-unix.c b/lang/qscheme/files/patch-unix.c
new file mode 100644
index 000000000000..4d1c86bd8d0c
--- /dev/null
+++ b/lang/qscheme/files/patch-unix.c
@@ -0,0 +1,38 @@
+--- unix.c.orig 2009-03-03 18:14:22.000000000 +0200
++++ unix.c 2009-03-03 18:17:18.000000000 +0200
+@@ -283,12 +283,14 @@
+
+ #define SCM_DIRP(x) (SCM_OBJTYPE(x) == SOBJ_T_DIR)
+ #define SCM_DIR(x) (DIR *)SCM_AUX(x)
++#define SCM_DIR_SET SCM_AUX_SET
+
+ void scm_dir_sweep(SOBJ x)
+ {
+ if (SCM_DIR(x) != NULL) {
+ closedir(SCM_DIR(x));
+- SCM_DIR(x) = NULL;
++ /*SCM_DIR(x) = NULL;*/
++ SCM_DIR_SET(x, NULL);
+ }
+ }
+
+@@ -300,7 +302,8 @@
+ if (!SCM_STRINGP(name)) SCM_ERR("bad dir name", name);
+ if ((dir = opendir(SCM_STR_VALUE(name))) != NULL) {
+ new = scm_newcell(SOBJ_T_DIR);
+- SCM_DIR(new) = dir;
++ /*SCM_DIR(new) = dir;*/
++ SCM_DIR_SET(new, dir);
+ return(new);
+ }
+ return(scm_false);
+@@ -312,7 +315,8 @@
+ if (!SCM_DIRP(dir)) SCM_ERR("bad dir", dir);
+ if (SCM_DIR(dir) == NULL) SCM_ERR("already closed", dir);
+ r = closedir(SCM_DIR(dir));
+- SCM_DIR(dir) = NULL;
++ /*SCM_DIR(dir) = NULL;*/
++ SCM_DIR_SET(dir, NULL);
+ return(SCM_MKBOOL(r == 0));
+ }
+