From e7326dbbaf225c88796976a11cbf891768fa29b7 Mon Sep 17 00:00:00 2001 From: Julian Storer Date: Wed, 24 Mar 2010 22:14:56 +0000 Subject: [PATCH] Small fix for URL encoding. --- juce_amalgamated.cpp | 28 ++++++++++------------------ src/io/network/juce_URL.cpp | 28 ++++++++++------------------ 2 files changed, 20 insertions(+), 36 deletions(-) diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 4c601282da..4e33b278b8 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -8243,30 +8243,22 @@ const StringPairArray& URL::getMimeTypesOfUploadFiles() const const String URL::removeEscapeChars (const String& s) { - const int len = s.length(); - HeapBlock resultUTF8 (len * 4); - char* r = resultUTF8; + String result (s.replaceCharacter ('+', ' ')); + int nextPercent = 0; - for (int i = 0; i < len; ++i) + for (;;) { - char c = (char) s[i]; - if (c == 0) + nextPercent = result.indexOfChar (nextPercent, '%'); + + if (nextPercent < 0) break; - if (c == '+') - { - c = ' '; - } - else if (c == '%') - { - c = (char) s.substring (i + 1, i + 3).getHexValue32(); - i += 2; - } - - *r++ = c; + juce_wchar replacementChar = result.substring (nextPercent + 1, nextPercent + 3).getHexValue32(); + result = result.replaceSection (nextPercent, 3, String::charToString (replacementChar)); + ++nextPercent; } - return String::fromUTF8 (resultUTF8); + return result; } const String URL::addEscapeChars (const String& s, const bool isParameter) diff --git a/src/io/network/juce_URL.cpp b/src/io/network/juce_URL.cpp index c8f8840cc7..66a885920a 100644 --- a/src/io/network/juce_URL.cpp +++ b/src/io/network/juce_URL.cpp @@ -537,30 +537,22 @@ const StringPairArray& URL::getMimeTypesOfUploadFiles() const //============================================================================== const String URL::removeEscapeChars (const String& s) { - const int len = s.length(); - HeapBlock resultUTF8 (len * 4); - char* r = resultUTF8; + String result (s.replaceCharacter ('+', ' ')); + int nextPercent = 0; - for (int i = 0; i < len; ++i) + for (;;) { - char c = (char) s[i]; - if (c == 0) + nextPercent = result.indexOfChar (nextPercent, '%'); + + if (nextPercent < 0) break; - if (c == '+') - { - c = ' '; - } - else if (c == '%') - { - c = (char) s.substring (i + 1, i + 3).getHexValue32(); - i += 2; - } - - *r++ = c; + juce_wchar replacementChar = result.substring (nextPercent + 1, nextPercent + 3).getHexValue32(); + result = result.replaceSection (nextPercent, 3, String::charToString (replacementChar)); + ++nextPercent; } - return String::fromUTF8 (resultUTF8); + return result; } const String URL::addEscapeChars (const String& s, const bool isParameter)