From 23461c2e95a26fa12dacfb06d6e1fd016898f055 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 6 Aug 2013 16:26:48 -0700 Subject: [PATCH] fixed crash --- libraries/shared/src/OctalCode.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/libraries/shared/src/OctalCode.cpp b/libraries/shared/src/OctalCode.cpp index eeea3385e9..5513d362ac 100644 --- a/libraries/shared/src/OctalCode.cpp +++ b/libraries/shared/src/OctalCode.cpp @@ -118,17 +118,19 @@ unsigned char * childOctalCode(unsigned char * parentOctalCode, char childNumber void voxelDetailsForCode(unsigned char * octalCode, VoxelPositionSize& voxelPositionSize) { float output[3]; memset(&output[0], 0, 3 * sizeof(float)); - float currentScale = 1.0; - - for (int i = 0; i < numberOfThreeBitSectionsInCode(octalCode); i++) { - currentScale *= 0.5; - int sectionIndex = sectionValue(octalCode + 1 + (3 * i / 8), (3 * i) % 8); + + if (octalCode) { + for (int i = 0; i < numberOfThreeBitSectionsInCode(octalCode); i++) { + currentScale *= 0.5; + int sectionIndex = sectionValue(octalCode + 1 + (BITS_IN_OCTAL * i / BITS_IN_BYTE), + (BITS_IN_OCTAL * i) % BITS_IN_BYTE); + + for (int j = 0; j < BITS_IN_OCTAL; j++) { + output[j] += currentScale * (int)oneAtBit(sectionIndex, (BITS_IN_BYTE - BITS_IN_OCTAL) + j); + } - for (int j = 0; j < 3; j++) { - output[j] += currentScale * (int)oneAtBit(sectionIndex, 5 + j); } - } voxelPositionSize.x = output[0]; voxelPositionSize.y = output[1];