From 0f91a65b3f8010446f32f59a5c996090ad7b2921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Sun, 2 Jul 2000 16:54:08 +0200 Subject: [PATCH] Fixed bug with clear_svalues{,_undefined}(). Rev: src/svalue.c:1.79 Rev: src/svalue.h:1.58 --- src/svalue.c | 12 +++++++----- src/svalue.h | 6 +++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/svalue.c b/src/svalue.c index c7d386586f..660806f8a9 100644 --- a/src/svalue.c +++ b/src/svalue.c @@ -23,7 +23,7 @@ #include "queue.h" #include "bignum.h" -RCSID("$Id: svalue.c,v 1.78 2000/06/29 16:44:24 grubba Exp $"); +RCSID("$Id: svalue.c,v 1.79 2000/07/02 14:54:07 grubba Exp $"); struct svalue dest_ob_zero = { T_INT, 0 }; @@ -1110,24 +1110,26 @@ void print_svalue (FILE *out, struct svalue *s) free (str.str); } -void clear_svalues(struct svalue *s, size_t num) +/* NOTE: Must handle num being negative. */ +void clear_svalues(struct svalue *s, ptrdiff_t num) { struct svalue dum; dum.type=T_INT; dum.subtype=NUMBER_NUMBER; dum.u.refs=0; dum.u.integer=0; - while(num--) *(s++)=dum; + while(num-- > 0) *(s++)=dum; } -void clear_svalues_undefined(struct svalue *s, size_t num) +/* NOTE: Must handle num being negative. */ +void clear_svalues_undefined(struct svalue *s, ptrdiff_t num) { struct svalue dum; dum.type=T_INT; dum.subtype=NUMBER_UNDEFINED; dum.u.refs=0; dum.u.integer=0; - while(num--) *(s++)=dum; + while(num-- > 0) *(s++)=dum; } void copy_svalues_recursively_no_free(struct svalue *to, diff --git a/src/svalue.h b/src/svalue.h index 2afcdceaf6..e1034e3d92 100644 --- a/src/svalue.h +++ b/src/svalue.h @@ -5,7 +5,7 @@ \*/ /* - * $Id: svalue.h,v 1.57 2000/06/29 16:44:24 grubba Exp $ + * $Id: svalue.h,v 1.58 2000/07/02 14:54:08 grubba Exp $ */ #ifndef SVALUE_H #define SVALUE_H @@ -366,8 +366,8 @@ int is_equal(struct svalue *a,struct svalue *b); int is_lt(struct svalue *a,struct svalue *b); void describe_svalue(struct svalue *s,int indent,struct processing *p); void print_svalue (FILE *out, struct svalue *s); -void clear_svalues(struct svalue *s, size_t num); -void clear_svalues_undefined(struct svalue *s, size_t num); +void clear_svalues(struct svalue *s, ptrdiff_t num); +void clear_svalues_undefined(struct svalue *s, ptrdiff_t num); void copy_svalues_recursively_no_free(struct svalue *to, struct svalue *from, size_t num, -- GitLab