diff --git a/libguile/goops.c b/libguile/goops.c index 8da4a0772..5708059e5 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -2377,6 +2377,7 @@ create_standard_classes (void) scm_class_class, scm_list_2 (scm_class_input_port, scm_class_output_port), SCM_EOL); + scm_classes_initialized = 1; } /********************************************************************** diff --git a/libguile/objects.c b/libguile/objects.c index f81014738..ad1501e95 100644 --- a/libguile/objects.c +++ b/libguile/objects.c @@ -78,6 +78,8 @@ SCM scm_class_unknown; SCM *scm_port_class = 0; SCM *scm_smob_class = 0; +int scm_classes_initialized = 0; + SCM scm_no_applicable_method; /* This function is used for efficient type dispatch. */ @@ -86,6 +88,9 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0, "Return the class of @var{x}.") #define FUNC_NAME s_scm_class_of { + if (!scm_classes_initialized) + scm_misc_error (FUNC_NAME, "GOOPS not loaded yet.", SCM_EOL); + switch (SCM_ITAG3 (x)) { case scm_tc3_int_1: diff --git a/libguile/objects.h b/libguile/objects.h index 649d3fb1e..54c40a913 100644 --- a/libguile/objects.h +++ b/libguile/objects.h @@ -207,6 +207,7 @@ extern SCM scm_class_real, scm_class_complex, scm_class_integer; extern SCM scm_class_unknown; extern SCM *scm_port_class; extern SCM *scm_smob_class; +extern int scm_classes_initialized; extern SCM scm_no_applicable_method;