Fixed issue with filename parser for 9 patch images 35/19435/1
authorDavid Steele <david.steele@partner.samsung.com>
Tue, 8 Apr 2014 10:54:22 +0000 (11:54 +0100)
committerVictor Cebollada <v.cebollada@samsung.com>
Fri, 11 Apr 2014 14:20:36 +0000 (15:20 +0100)
[Issue#]       N/A
[Problem]      .filename9.jpg or .filename#.jpg matched incorrectly.
[Cause]        matcher not stopping if not detected . before 9 or hash.
[Solution]     Ensured matcher stops after character before 9.suffix or #.suffix.
Note, the filename ".9.jpg" still matches - is this desired?

[Verification] Build Repo

Change-Id: I32cc2e8db4d35e5237c614a0617ddf8dff198518
Signed-off-by: David Steele <david.steele@partner.samsung.com>
dali/internal/event/images/image-impl.cpp

index 8186ac2..2e9a3b6 100644 (file)
@@ -303,10 +303,10 @@ bool Image::IsNinePatchFileName( std::string filename )
 {
   bool match = false;
 
-  std::string::const_iterator iter = filename.end();
+  std::string::const_reverse_iterator iter = filename.rbegin();
   iter--;
   enum { SUFFIX, HASH, HASH_DOT, DONE } state = SUFFIX;
-  while(iter >= filename.begin() && state != DONE)
+  while(iter < filename.rend() && state != DONE)
   {
     switch(state)
     {
@@ -338,9 +338,9 @@ bool Image::IsNinePatchFileName( std::string filename )
       {
         if(*iter == '.')
         {
-          state = DONE;
           match = true;
         }
+        state = DONE; // Stop testing characters
       }
       break;
       case DONE:
@@ -348,7 +348,7 @@ bool Image::IsNinePatchFileName( std::string filename )
       }
       break;
     }
-    iter--;
+    iter++;
   }
   return match;
 }