diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-01-31 21:09:15 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-01-31 21:09:15 +0100 |
commit | 39d7d51bcdc0edd8eb3034a9d094511b7b75e9e1 (patch) | |
tree | ea28b242b0b6ccf74555e91d2b5f8c755ee2e3b5 | |
parent | 04e5b5a22823fdf30e35c383aea8843f7c747eec (diff) | |
download | vim-git-39d7d51bcdc0edd8eb3034a9d094511b7b75e9e1.tar.gz |
updated for version 7.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.c | 31 | ||||
-rw-r--r-- | src/testdir/test70.in | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 34 insertions, 2 deletions
diff --git a/src/if_mzsch.c b/src/if_mzsch.c index f9bcd5d91..238446409 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 24c0c12b4..9fbe818b3 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 8cd0432d0..2f17d2c4e 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, |