Branch: Tag:

2008-01-26

2008-01-26 22:34:27 by Martin Stjernholm <mast@lysator.liu.se>

Eradicated all instances of setting type to T_INT without also setting the
subtype in an svalue. From now on one should either set the subtype or use
the new svalue type PIKE_T_FREE (see svalue.h).

Rev: src/OCPikeInterpreter.m:1.3
Rev: src/apply_low.h:1.32
Rev: src/array.c:1.198
Rev: src/array.h:1.71
Rev: src/bignum.c:1.42
Rev: src/builtin.cmod:1.193
Rev: src/builtin_functions.c:1.650
Rev: src/configure.in:1.1038
Rev: src/cpp.c:1.164
Rev: src/encode.c:1.250
Rev: src/error.c:1.151
Rev: src/interpret.c:1.385
Rev: src/interpret_functions.h:1.197
Rev: src/iterators.cmod:1.64
Rev: src/las.c:1.403
Rev: src/main.c:1.228
Rev: src/mapping.c:1.195
Rev: src/module.c:1.47
Rev: src/modules/Gmp/mpz_glue.c:1.170
Rev: src/modules/HTTPLoop/accept_and_parse.c:1.39
Rev: src/modules/HTTPLoop/requestobject.c:1.31
Rev: src/modules/Image/colortable.c:1.130
Rev: src/modules/Java/jvm.c:1.84
Rev: src/modules/Parser/html.c:1.178
Rev: src/modules/Parser/xml.cmod:1.97
Rev: src/modules/Postgres/postgres.c:1.55
Rev: src/modules/_math/math.c:1.87
Rev: src/modules/files/sendfile.c:1.78
Rev: src/modules/spider/spider.c:1.134
Rev: src/multiset.c:1.106
Rev: src/object.c:1.281
Rev: src/operators.c:1.226
Rev: src/pike_error.h:1.42
Rev: src/post_modules/Shuffler/Shuffler.cmod:1.45
Rev: src/post_modules/_ADT/circular_list.cmod:1.18
Rev: src/post_modules/_ADT/sequence.cmod:1.19
Rev: src/program.c:1.642
Rev: src/signal_handler.c:1.331
Rev: src/sscanf.c:1.170
Rev: src/svalue.c:1.234
Rev: src/svalue.h:1.149

2:   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: array.h,v 1.70 2007/12/17 18:02:59 grubba Exp $ + || $Id: array.h,v 1.71 2008/01/26 22:34:17 mast Exp $   */      #ifndef ARRAY_H
283:    * @param I the index of the array to set    * @param S the svalue to set    */ - #define array_set_index(V,I,S) do { \ + #define array_set_index_no_free(V,I,S) do { \    struct array *v_=(V); \    INT32 index_=(I); \    struct svalue *s_=(S); \ -  struct svalue tmp_; \ +     \    DO_IF_DEBUG( \    if(index_<0 || index_>v_->size) \
295:    ) \    \    check_destructed(s_); \ -  tmp_=ITEM(v_)[index_]; \ +     \    v_->type_field |= 1 << s_->type; \    assign_svalue_no_free( ITEM(v_) + index_, s_); \ -  free_svalue(&tmp_); \ +    }while(0) -  + #define array_set_index(V,I,S) do { \ +  struct array *v_=(V); \ +  INT32 index_=(I); \ +  struct svalue *s_=(S); \ +  \ +  DO_IF_DEBUG( \ +  if(index_<0 || index_>v_->size) \ +  Pike_fatal("Illegal index in low level array set routine.\n"); \ +  ) \ +  \ +  check_destructed(s_); \ +  \ +  v_->type_field |= 1 << s_->type; \ +  assign_svalue( ITEM(v_) + index_, s_); \ + }while(0)      #define array_fix_unfinished_type_field(A) do { \    struct array *a_ = (A); \