diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 5e35c4127..27a8835cd 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,15 @@ +2002-01-10 Dirk Herrmann + + * eval.[ch] (scm_deval_args): Made static. + + * srcprop.c (scm_source_property): Remove redundant SCM_IMP + test. + + * strings.c (scm_c_string2str): Clarified comment. Replaced + THINKME by FIXME for uniformness. Removed question about whether + arguments need to be protected from garbage collection: Arguments + must be protected as any other variable. + 2002-01-10 Dirk Herrmann * procs.h (SCM_CLOSURE_BODY): New Macro. diff --git a/libguile/eval.c b/libguile/eval.c index c44ca2738..8ad27a869 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -1825,7 +1825,7 @@ SCM_DEFINE (scm_evaluator_traps, "evaluator-traps-interface", 0, 1, 0, } #undef FUNC_NAME -SCM +static SCM scm_deval_args (SCM l, SCM env, SCM proc, SCM *lloc) { SCM *results = lloc, res; diff --git a/libguile/eval.h b/libguile/eval.h index 84705668d..27f3860db 100644 --- a/libguile/eval.h +++ b/libguile/eval.h @@ -184,7 +184,6 @@ SCM_API SCM scm_unmemocopy (SCM form, SCM env); SCM_API SCM scm_eval_car (SCM pair, SCM env); SCM_API SCM scm_eval_body (SCM code, SCM env); SCM_API SCM scm_eval_args (SCM i, SCM env, SCM proc); -SCM_API SCM scm_deval_args (SCM l, SCM env, SCM proc, SCM *lloc); SCM_API SCM scm_m_quote (SCM xorig, SCM env); SCM_API SCM scm_m_begin (SCM xorig, SCM env); SCM_API SCM scm_m_if (SCM xorig, SCM env); diff --git a/libguile/srcprop.c b/libguile/srcprop.c index 651066135..48df4e6a6 100644 --- a/libguile/srcprop.c +++ b/libguile/srcprop.c @@ -222,7 +222,7 @@ SCM_DEFINE (scm_source_property, "source-property", 2, 0, 0, SCM_WRONG_TYPE_ARG (1, obj); #endif p = scm_hashq_ref (scm_source_whash, obj, SCM_EOL); - if (SCM_IMP (p) || !SRCPROPSP (p)) + if (!SRCPROPSP (p)) goto plist; if (SCM_EQ_P (scm_sym_breakpoint, key)) p = SRCPROPBRK (p); else if (SCM_EQ_P (scm_sym_line, key)) p = SCM_MAKINUM (SRCPROPLINE (p)); diff --git a/libguile/strings.c b/libguile/strings.c index dab7a18f8..3aa24958d 100644 --- a/libguile/strings.c +++ b/libguile/strings.c @@ -336,6 +336,7 @@ SCM_DEFINE (scm_string_append, "string-append", 0, 0, 1, } #undef FUNC_NAME + /* Converts the given Scheme string OBJ into a C string, containing a copy of OBJ's content with a trailing null byte. If LENP is non-NULL, set *LENP to the string's length. @@ -347,8 +348,8 @@ SCM_DEFINE (scm_string_append, "string-append", 0, 0, 1, Note that Scheme strings may contain arbitrary data, including null characters. This means that null termination is not a reliable way to determine the length of the returned value. However, the function always - copies the complete contents of OBJ, and sets *LENP to the true length - of the string (if LENP is non-null). */ + copies the complete contents of OBJ, and sets *LENP to the length of the + scheme string (if LENP is non-null). */ char * scm_c_string2str (SCM obj, char *str, size_t *lenp) { @@ -357,22 +358,26 @@ scm_c_string2str (SCM obj, char *str, size_t *lenp) SCM_ASSERT (SCM_STRINGP (obj), obj, SCM_ARG1, "scm_c_string2str"); len = SCM_STRING_LENGTH (obj); - /* THINKME: What malloc policy? */ if (str == NULL) - str = (char *) malloc ((len + 1) * sizeof (char)); - if (str == NULL) - return NULL; + { + /* FIXME: Should we use exported wrappers for malloc (and free), which + * allow windows DLLs to call the correct freeing function? */ + str = (char *) malloc ((len + 1) * sizeof (char)); + if (str == NULL) + return NULL; + } memcpy (str, SCM_STRING_CHARS (obj), len); - /* THINKME: Is this necessary for arguments? I do not think so... */ scm_remember_upto_here_1 (obj); str[len] = '\0'; if (lenp != NULL) *lenp = len; + return str; } + void scm_init_strings () {