From c891a40e9fc5f718bfaf6e70f8fd0b19311d14a6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 18 Jan 2009 16:42:17 +0100 Subject: [PATCH] Publish the maximum number of SMOB types as `SCM_I_MAX_SMOB_TYPE_COUNT'. * libguile/goops.c (create_smob_classes): Refer to `SCM_I_MAX_SMOB_TYPE_COUNT' rather than 255 (which is wrong) or 256. * libguile/smob.c (MAX_SMOB_COUNT): Alias for `SCM_I_MAX_SMOB_TYPE_COUNT'. * libguile/smob.h (SCM_I_MAX_SMOB_TYPE_COUNT): New macro. --- libguile/goops.c | 4 ++-- libguile/smob.c | 5 +++-- libguile/smob.h | 5 ++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libguile/goops.c b/libguile/goops.c index 1bd56a9f0..e373a7ccc 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -2697,8 +2697,8 @@ create_smob_classes (void) { long i; - scm_smob_class = (SCM *) scm_malloc (255 * sizeof (SCM)); - for (i = 0; i < 255; ++i) + scm_smob_class = scm_malloc (SCM_I_MAX_SMOB_TYPE_COUNT * sizeof (SCM)); + for (i = 0; i < SCM_I_MAX_SMOB_TYPE_COUNT; ++i) scm_smob_class[i] = 0; scm_smob_class[SCM_TC2SMOBNUM (scm_tc16_keyword)] = scm_class_keyword; diff --git a/libguile/smob.c b/libguile/smob.c index 0ad4a35ca..ddff2a00b 100644 --- a/libguile/smob.c +++ b/libguile/smob.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2003, 2004, 2006 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2003, 2004, 2006, 2009 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 @@ -49,7 +49,8 @@ * tags for smobjects (if you know a tag you can get an index and conversely). */ -#define MAX_SMOB_COUNT 256 +#define MAX_SMOB_COUNT SCM_I_MAX_SMOB_TYPE_COUNT + long scm_numsmob; scm_smob_descriptor scm_smobs[MAX_SMOB_COUNT]; diff --git a/libguile/smob.h b/libguile/smob.h index 2bf508e28..6f5033605 100644 --- a/libguile/smob.h +++ b/libguile/smob.h @@ -3,7 +3,7 @@ #ifndef SCM_SMOB_H #define SCM_SMOB_H -/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2004, 2006 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2004, 2006, 2009 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 @@ -152,6 +152,9 @@ while (0) #define SCM_SMOB_APPLY_2(x, a1, a2) (SCM_SMOB_DESCRIPTOR (x).apply_2 (x, (a1), (a2))) #define SCM_SMOB_APPLY_3(x, a1, a2, rst) (SCM_SMOB_DESCRIPTOR (x).apply_3 (x, (a1), (a2), (rst))) +/* Maximum number of SMOB types. */ +#define SCM_I_MAX_SMOB_TYPE_COUNT 256 + SCM_API long scm_numsmob; SCM_API scm_smob_descriptor scm_smobs[]; -- 2.20.1