summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2013-01-31 21:09:15 +0100
committerBram Moolenaar <bram@vim.org>2013-01-31 21:09:15 +0100
commitaed476ce5bdcb21ca8a7239a20072c45da4c8bae (patch)
treef846bb436fa9c1a4dce4137665cdf86c6ce8b5cb
parent88d835d1e10948b009eba5bb4476652528244ec4 (diff)
downloadvim-7.3.798.tar.gz
updated for version 7.3.798v7.3.798v7-3-798
Problem: MzScheme: circular list does not work correctly. Solution: Separate Mac-specific code from generic code. (Sergey Khorev)
-rw-r--r--src/if_mzsch.c31
-rw-r--r--src/testdir/test70.in3
-rw-r--r--src/version.c2
3 files changed, 34 insertions, 2 deletions
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
index f9bcd5d9..23844640 100644
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -965,6 +965,7 @@ startup_mzscheme(void)
#ifdef MZSCHEME_COLLECTS
/* setup 'current-library-collection-paths' parameter */
# if MZSCHEME_VERSION_MAJOR >= 299
+# ifdef MACOS
{
Scheme_Object *coll_byte_string = NULL;
Scheme_Object *coll_char_string = NULL;
@@ -985,6 +986,36 @@ startup_mzscheme(void)
MZ_GC_CHECK();
MZ_GC_UNREG();
}
+# else
+ {
+ Scheme_Object *coll_byte_string = NULL;
+ Scheme_Object *coll_char_string = NULL;
+ Scheme_Object *coll_path = NULL;
+ Scheme_Object *coll_pair = NULL;
+ Scheme_Config *config = NULL;
+
+ MZ_GC_DECL_REG(5);
+ MZ_GC_VAR_IN_REG(0, coll_byte_string);
+ MZ_GC_VAR_IN_REG(1, coll_char_string);
+ MZ_GC_VAR_IN_REG(2, coll_path);
+ MZ_GC_VAR_IN_REG(3, coll_pair);
+ MZ_GC_VAR_IN_REG(4, config);
+ MZ_GC_REG();
+ coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS);
+ MZ_GC_CHECK();
+ coll_char_string = scheme_byte_string_to_char_string(coll_byte_string);
+ MZ_GC_CHECK();
+ coll_path = scheme_char_string_to_path(coll_char_string);
+ MZ_GC_CHECK();
+ coll_pair = scheme_make_pair(coll_path, scheme_null);
+ MZ_GC_CHECK();
+ config = scheme_current_config();
+ MZ_GC_CHECK();
+ scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair);
+ MZ_GC_CHECK();
+ MZ_GC_UNREG();
+ }
+# endif
# else
{
Scheme_Object *coll_string = NULL;
diff --git a/src/testdir/test70.in b/src/testdir/test70.in
index 24c0c12b..9fbe818b 100644
--- a/src/testdir/test70.in
+++ b/src/testdir/test70.in
@@ -38,8 +38,7 @@ STARTTEST
:" circular list (at the same time test lists containing lists)
:mz (set-car! (cddr l) l)
:let l2 = mzeval("h")["list"]
-:" bug: this returns item2, but it should be l2
-:if l2[2] == "item2"
+:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
diff --git a/src/version.c b/src/version.c
index 8cd0432d..2f17d2c4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -726,6 +726,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 798,
+/**/
797,
/**/
796,