From 162939fda10cb4b703632074f6701bc040cc9f69 Mon Sep 17 00:00:00 2001 From: Kai Ludwig Date: Tue, 3 Jun 2014 19:11:53 +0200 Subject: [PATCH] dynamically malloc/free arrays to avoid stack overflow on windows. starting with 0 for array index will give a reasonable value for 'first'. --- interface/src/Util.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 79a2e31d80..07ca65b286 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -400,9 +400,9 @@ bool closeEnoughForGovernmentWork(float a, float b) { void runTimingTests() { // How long does it take to make a call to get the time? const int numTests = 1000000; - int iResults[numTests]; + int* iResults = (int*)malloc(sizeof(int) * numTests); float fTest = 1.0; - float fResults[numTests]; + float* fResults = (float*)malloc(sizeof(float) * numTests); QElapsedTimer startTime; startTime.start(); float elapsedUsecs; @@ -413,7 +413,7 @@ void runTimingTests() { // Random number generation startTime.start(); - for (int i = 1; i < numTests; i++) { + for (int i = 0; i < numTests; i++) { iResults[i] = rand(); } elapsedUsecs = (float)startTime.nsecsElapsed() * NSEC_TO_USEC; @@ -421,16 +421,19 @@ void runTimingTests() { // Random number generation using randFloat() startTime.start(); - for (int i = 1; i < numTests; i++) { + for (int i = 0; i < numTests; i++) { fResults[i] = randFloat(); } elapsedUsecs = (float)startTime.nsecsElapsed() * NSEC_TO_USEC; qDebug("randFloat() stored in array usecs: %f, first result: %f", elapsedUsecs / (float) numTests, fResults[0]); + free(iResults); + free(fResults); + // PowF function fTest = 1145323.2342f; startTime.start(); - for (int i = 1; i < numTests; i++) { + for (int i = 0; i < numTests; i++) { fTest = powf(fTest, 0.5f); } elapsedUsecs = (float)startTime.nsecsElapsed() * NSEC_TO_USEC; @@ -440,7 +443,7 @@ void runTimingTests() { float distance; glm::vec3 pointA(randVector()), pointB(randVector()); startTime.start(); - for (int i = 1; i < numTests; i++) { + for (int i = 0; i < numTests; i++) { //glm::vec3 temp = pointA - pointB; //float distanceSquared = glm::dot(temp, temp); distance = glm::distance(pointA, pointB); @@ -454,7 +457,7 @@ void runTimingTests() { float result; startTime.start(); - for (int i = 1; i < numTests; i++) { + for (int i = 0; i < numTests; i++) { glm::vec3 temp = vecA-vecB; result = glm::dot(temp,temp); }