From 1b0856307976ab348027491b795997b0368551f9 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 16 Dec 2015 16:56:49 -0800 Subject: [PATCH 1/4] ParticleEffectEntityItem: fix for invalid iterator increment Was causing an assert in debug, due to calling ++ on an invalid iterator. In release this might lead to memory corruption. --- libraries/entities/src/ParticleEffectEntityItem.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index 5600c85650..533b077a9c 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -595,19 +595,24 @@ void ParticleEffectEntityItem::integrateParticle(Particle& particle, float delta void ParticleEffectEntityItem::stepSimulation(float deltaTime) { // update particles between head and tail + int popCount = 0; for (Particle& particle : _particles) { particle.lifetime += deltaTime; // if particle has died. if (particle.lifetime >= _lifespan) { // move head forward - _particles.pop_front(); + popCount++; } else { // Otherwise update it integrateParticle(particle, deltaTime); } } + for (int i = 0; i < popCount; i++) { + _particles.pop_front(); + } + // emit new particles, but only if we are emmitting if (getIsEmitting() && _emitRate > 0.0f && _lifespan > 0.0f && _polarStart <= _polarFinish) { From 2eecb61da5a5c9f130522e0cf3cd6907fc5ef95b Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 16 Dec 2015 19:08:31 -0800 Subject: [PATCH 2/4] Prefer erase over repeated pop_front calls --- libraries/entities/src/ParticleEffectEntityItem.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index 533b077a9c..165afd1536 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -608,10 +608,7 @@ void ParticleEffectEntityItem::stepSimulation(float deltaTime) { integrateParticle(particle, deltaTime); } } - - for (int i = 0; i < popCount; i++) { - _particles.pop_front(); - } + _particles.erase(_particles.begin(), _particles.begin() + popCount); // emit new particles, but only if we are emmitting if (getIsEmitting() && _emitRate > 0.0f && _lifespan > 0.0f && _polarStart <= _polarFinish) { From 286b984d6fd0cb693b8465123ede179476c84893 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 17 Dec 2015 10:48:33 -0800 Subject: [PATCH 3/4] serve SHTML files with HTML MIME type --- libraries/embedded-webserver/src/HTTPManager.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libraries/embedded-webserver/src/HTTPManager.cpp b/libraries/embedded-webserver/src/HTTPManager.cpp index 1f1dfa1735..0b98d52cb1 100644 --- a/libraries/embedded-webserver/src/HTTPManager.cpp +++ b/libraries/embedded-webserver/src/HTTPManager.cpp @@ -145,9 +145,14 @@ bool HTTPManager::handleHTTPRequest(HTTPConnection* connection, const QUrl& url, localFileData = localFileString.toLocal8Bit(); } - - connection->respond(HTTPConnection::StatusCode200, localFileData, - qPrintable(mimeDatabase.mimeTypeForFile(filePath).name())); + + // if this is an shtml file just make the MIME type match HTML so browsers aren't confused + auto mimeType = QString { "text/html" }; + if (localFileInfo.suffix() != "shtml") { + mimeType = mimeDatabase.mimeTypeForFile(filePath).name(); + } + + connection->respond(HTTPConnection::StatusCode200, localFileData, qPrintable(mimeType)); return true; } From 08f42c08d9e5286ee4483b3f40654c3adf4258c7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 17 Dec 2015 10:54:32 -0800 Subject: [PATCH 4/4] use a ternary for single assignment --- libraries/embedded-webserver/src/HTTPManager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/embedded-webserver/src/HTTPManager.cpp b/libraries/embedded-webserver/src/HTTPManager.cpp index 0b98d52cb1..4c804f2e7b 100644 --- a/libraries/embedded-webserver/src/HTTPManager.cpp +++ b/libraries/embedded-webserver/src/HTTPManager.cpp @@ -147,10 +147,10 @@ bool HTTPManager::handleHTTPRequest(HTTPConnection* connection, const QUrl& url, } // if this is an shtml file just make the MIME type match HTML so browsers aren't confused - auto mimeType = QString { "text/html" }; - if (localFileInfo.suffix() != "shtml") { - mimeType = mimeDatabase.mimeTypeForFile(filePath).name(); - } + // otherwise use the mimeDatabase to look it up + auto mimeType = localFileInfo.suffix() == "shtml" + ? QString { "text/html" } + : mimeDatabase.mimeTypeForFile(filePath).name(); connection->respond(HTTPConnection::StatusCode200, localFileData, qPrintable(mimeType));