summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/foreign.c2
-rw-r--r--test-suite/tests/foreign.test8
2 files changed, 7 insertions, 3 deletions
diff --git a/libguile/foreign.c b/libguile/foreign.c
index f8c268d51..0dc7ac666 100644
--- a/libguile/foreign.c
+++ b/libguile/foreign.c
@@ -319,8 +319,6 @@ SCM_DEFINE (scm_set_pointer_finalizer_x, "set-pointer-finalizer!", 2, 0, 0,
c_finalizer = SCM_POINTER_VALUE (finalizer);
- SCM_SET_CELL_WORD_0 (pointer, SCM_CELL_WORD_0 (pointer) | (1 << 16UL));
-
GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (pointer),
pointer_finalizer_trampoline,
c_finalizer,
diff --git a/test-suite/tests/foreign.test b/test-suite/tests/foreign.test
index 2c326c98e..6eafe954a 100644
--- a/test-suite/tests/foreign.test
+++ b/test-suite/tests/foreign.test
@@ -1,6 +1,6 @@
;;;; foreign.test --- FFI. -*- mode: scheme; coding: utf-8; -*-
;;;;
-;;;; Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+;;;; Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
;;;;
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -71,6 +71,12 @@
(equal? (make-pointer 123)
(make-pointer 123 finalizer))))
+ (pass-if "equal? modulo finalizer (set-pointer-finalizer!)"
+ (let ((finalizer (dynamic-func "scm_is_pair" (dynamic-link)))
+ (ptr (make-pointer 123)))
+ (set-pointer-finalizer! ptr finalizer)
+ (equal? (make-pointer 123) ptr)))
+
(pass-if "not equal?"
(not (equal? (make-pointer 123) (make-pointer 456)))))