tasn pushed a commit to branch master.

commit 827885d794f6271c4f62194faee513e38e92364f
Author: Tom Hacohen <[email protected]>
Date:   Mon Jul 1 14:11:27 2013 +0100

    Evas textblock: Fixed format parsing to not be confused by single-quotes.
    
    Before this commit, having a single quote anywhere in the format would mess
    up all of the format parsing.
    
    Thanks to MinSu Seo for reporting.
---
 ChangeLog                                   |  4 ++++
 NEWS                                        |  1 +
 src/lib/evas/canvas/evas_object_textblock.c | 12 ++++++++----
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 772dff5..fc31833 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-25  Tom Hacohen
+
+       * Evas textblock: Fixed issue when parsing formats with quotes.
+
 2013-06-28  Jiyoun Park
 
     * Evas: Fix jpeg loader cannot deal with exif information correctly
diff --git a/NEWS b/NEWS
index 873f218..cbbb71d 100644
--- a/NEWS
+++ b/NEWS
@@ -342,3 +342,4 @@ Fixes:
     * Evas textblock: Fixed issue with textblocks without fonts segfaulting.
     * Evas: Fix evas_common_convert_yuv_42* functions to actually return the 
converted data.
     * Evas: Fix jpeg loader cannot deal with exif information correctly
+    * Evas textblock: Fixed issue when parsing formats with quotes.
diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index 88d1fa4..2b7a4be 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -2267,15 +2267,19 @@ _format_is_param(const char *item)
 static void
 _format_param_parse(const char *item, const char **key, const char **val)
 {
-   const char *start, *end, *quote;
+   const char *start, *end;
 
    start = strchr(item, '=');
    *key = eina_stringshare_add_length(item, start - item);
    start++; /* Advance after the '=' */
-   /* If we can find a quote, our new delimiter is a quote, not a space. */
-   if ((quote = strchr(start, '\'')))
+   /* If we can find a quote as the first non-space char,
+    * our new delimiter is a quote, not a space. */
+   while (*start == ' ')
+      start++;
+
+   if (*start == '\'')
      {
-        start = quote + 1;
+        start++;
         end = strchr(start, '\'');
         while ((end) && (end > start) && (end[-1] == '\\'))
           end = strchr(end + 1, '\'');

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to