aboutsummaryrefslogtreecommitdiff
path: root/src/stable/array.h
diff options
context:
space:
mode:
authorMike Buland <mbuland@penny-arcade.com>2021-07-30 09:16:27 -0700
committerMike Buland <mbuland@penny-arcade.com>2021-07-30 09:16:27 -0700
commit0fbcc3a0c7ef4835c77c5d8b87cc8732cc3f90df (patch)
treed214ecd864bbef469a9378ac5f3c05f6cd74f4da /src/stable/array.h
parent2745b2811b03e83c165b07801704f32fc5bc588d (diff)
downloadlibbu++-0fbcc3a0c7ef4835c77c5d8b87cc8732cc3f90df.tar.gz
libbu++-0fbcc3a0c7ef4835c77c5d8b87cc8732cc3f90df.tar.bz2
libbu++-0fbcc3a0c7ef4835c77c5d8b87cc8732cc3f90df.tar.xz
libbu++-0fbcc3a0c7ef4835c77c5d8b87cc8732cc3f90df.zip
Fixed uninitializsed bug in Bu::Array::setSize.
When setCapacity was used before setSize some elements were not being properly initialized in the array.
Diffstat (limited to 'src/stable/array.h')
-rw-r--r--src/stable/array.h33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/stable/array.h b/src/stable/array.h
index ecffc6a..b089bda 100644
--- a/src/stable/array.h
+++ b/src/stable/array.h
@@ -297,7 +297,7 @@ namespace Bu
297 return core->iSize; 297 return core->iSize;
298 } 298 }
299 299
300 void setSize( long iNewLen, const value &initTo=value() ) 300 void setSize( long iNewLen )
301 { 301 {
302 if( core->iSize == iNewLen ) 302 if( core->iSize == iNewLen )
303 return; 303 return;
@@ -306,19 +306,40 @@ namespace Bu
306 if( iNewLen > core->iCapacity ) 306 if( iNewLen > core->iCapacity )
307 { 307 {
308 core->setCapacity( iNewLen ); 308 core->setCapacity( iNewLen );
309 }
310 if( iNewLen > core->iSize )
311 {
309 for( int j = core->iSize; j < iNewLen; j++ ) 312 for( int j = core->iSize; j < iNewLen; j++ )
310 { 313 {
311 core->va.construct( 314 core->va.construct(
312 &core->pData[j], 315 &core->pData[j]
313 initTo
314 ); 316 );
315 } 317 }
316 core->iSize = iNewLen;
317 } 318 }
318 else 319 core->iSize = iNewLen;
320 }
321
322 void setSize( long iNewLen, const value &initTo )
323 {
324 if( core->iSize == iNewLen )
325 return;
326
327 _hardCopy();
328 if( iNewLen > core->iCapacity )
329 {
330 core->setCapacity( iNewLen );
331 }
332 if( iNewLen > core->iSize )
319 { 333 {
320 core->iSize = iNewLen; 334 for( int j = core->iSize; j < iNewLen; j++ )
335 {
336 core->va.construct(
337 &core->pData[j],
338 initTo
339 );
340 }
321 } 341 }
342 core->iSize = iNewLen;
322 } 343 }
323 344
324 /** 345 /**