- (or
- (find-most-specific-known-type (ref-type-number gvalue))
- ;; This will signal an error if the type hierarchy is unknown
- (type-from-number (ref-type-number gvalue) t))))
+ (let ((type-number (ref-type-number gvalue)))
+ (unless (zerop type-number)
+ (or
+ (find-most-specific-known-type type-number)
+ ;; This will signal an error if the type hierarchy is unknown
+ (type-from-number type-number t))))))
+
+(let ((flags-reader nil))
+ (defun gvalue-static-p (gvalue)
+ (unless flags-reader
+ (setf flags-reader (reader-function 'unsigned-int)))
+ (prog1
+ (ldb-test (byte 1 +gvalue-nocopy-contents-flag+)
+ (funcall flags-reader gvalue +gvalue-flags-offset+))
+ (force-output))))