Changeset 13096 for trunk/abcl/src/org


Ignore:
Timestamp:
12/17/10 21:38:29 (11 years ago)
Author:
ehuelsmann
Message:

Add initialization with the default value of the element type
if neither INITIAL-ELEMENT nor INITIAL-CONTENT have been specified.

Found by: dmalves_ (freenode irc nick)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/make_array.java

    r12431 r13096  
    142142          }
    143143        final AbstractVector v;
     144        final LispObject defaultInitialElement;
    144145        if (upgradedType == Symbol.CHARACTER)
    145146          {
     
    148149            else
    149150              v = new SimpleString(size);
     151            defaultInitialElement = LispCharacter.getInstance('\0');
    150152          }
    151153        else if (upgradedType == Symbol.BIT)
     
    155157            else
    156158              v = new SimpleBitVector(size);
     159            defaultInitialElement = Fixnum.ZERO;
    157160          }
    158161        else if (upgradedType.equal(UNSIGNED_BYTE_8))
     
    162165            else
    163166              v = new BasicVector_UnsignedByte8(size);
     167            defaultInitialElement = Fixnum.ZERO;
    164168          }
    165169        else if (upgradedType.equal(UNSIGNED_BYTE_16) &&
     
    167171          {
    168172            v = new BasicVector_UnsignedByte16(size);
     173            defaultInitialElement = Fixnum.ZERO;
    169174          }
    170175        else if (upgradedType.equal(UNSIGNED_BYTE_32))
     
    174179            else
    175180              v = new BasicVector_UnsignedByte32(size);
     181            defaultInitialElement = Fixnum.ZERO;
    176182          }
    177183        else if (upgradedType == NIL)
    178           v = new NilVector(size);
     184          {
     185            v = new NilVector(size);
     186            defaultInitialElement = NIL;
     187          }
    179188        else
    180189          {
     
    183192            else
    184193              v = new SimpleVector(size);
     194            defaultInitialElement = NIL;
    185195          }
    186196        if (initialElementProvided != NIL)
     
    208218              return type_error(initialContents, Symbol.SEQUENCE);
    209219          }
     220        else
     221          {
     222            v.fill(defaultInitialElement);
     223          }
    210224        if (fillPointer != NIL)
    211225          v.setFillPointer(fillPointer);
     
    227241                if (initialElementProvided != NIL)
    228242                  array.fill(initialElement);
     243                else
     244                  array.fill(Fixnum.ZERO);
    229245              }
    230246          }
     
    240256                if (initialElementProvided != NIL)
    241257                  array.fill(initialElement);
     258                else
     259                  array.fill(Fixnum.ZERO);
    242260              }
    243261          }
     
    253271                if (initialElementProvided != NIL)
    254272                  array.fill(initialElement);
     273                else
     274                  array.fill(Fixnum.ZERO);
    255275              }
    256276          }
     
    266286                if (initialElementProvided != NIL)
    267287                  array.fill(initialElement);
     288                else
     289                  array.fill(NIL);
    268290              }
    269291          }
     
    283305                if (initialElementProvided != NIL)
    284306                  array.fill(initialElement);
     307                else
     308                  array.fill(Fixnum.ZERO);
    285309              }
    286310          }
     
    296320                if (initialElementProvided != NIL)
    297321                  array.fill(initialElement);
     322                else
     323                  array.fill(Fixnum.ZERO);
    298324              }
    299325          }
     
    309335                if (initialElementProvided != NIL)
    310336                  array.fill(initialElement);
     337                else
     338                  array.fill(NIL);
    311339              }
    312340          }
Note: See TracChangeset for help on using the changeset viewer.