guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 21/58: goops: Fix 'instance?' to work on objects that ar


From: Andy Wingo
Subject: [Guile-commits] 21/58: goops: Fix 'instance?' to work on objects that aren't structs.
Date: Tue, 7 Aug 2018 06:58:31 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 9fd1dc2fcce421f6b044398f3735b6e37459baa0
Author: Mark H Weaver <address@hidden>
Date:   Mon May 28 12:19:41 2018 -0400

    goops: Fix 'instance?' to work on objects that aren't structs.
    
    Fixes <https://bugs.gnu.org/31606>
    Reported by Tommi Höynälänmaa <address@hidden>
    
    * module/oop/goops.scm (instance?): Check that OBJ is a struct
    before applying 'struct-vtable' to it.
---
 module/oop/goops.scm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/module/oop/goops.scm b/module/oop/goops.scm
index 4bde684..df6df4f 100644
--- a/module/oop/goops.scm
+++ b/module/oop/goops.scm
@@ -1,6 +1,7 @@
 ;;;; goops.scm -- The Guile Object-Oriented Programming System
 ;;;;
-;;;; Copyright (C) 1998-2003,2006,2009-2011,2013-2015,2017 Free Software 
Foundation, Inc.
+;;;; Copyright (C) 1998-2003,2006,2009-2011,2013-2015,2017-2018
+;;;;   Free Software Foundation, Inc.
 ;;;; Copyright (C) 1993-1998 Erick Gallesio - I3S-CNRS/ESSI <address@hidden>
 ;;;;
 ;;;; This library is free software; you can redistribute it and/or
@@ -285,7 +286,8 @@
        (class-has-flags? (struct-vtable obj) vtable-flag-goops-slot)))
 
 (define-inlinable (instance? obj)
-  (class-has-flags? (struct-vtable obj) vtable-flag-goops-class))
+  (and (struct? obj)
+       (class-has-flags? (struct-vtable obj) vtable-flag-goops-class)))
 
 (define (class-has-statically-allocated-slots? class)
   (class-has-flags? class vtable-flag-goops-static-slot-allocation))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]