git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3537 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
                 while ((i < end_pos) && ((c = source[i++]) != '"')) m_Params += c;
                 m_Params += c;
             }
                 while ((i < end_pos) && ((c = source[i++]) != '"')) m_Params += c;
                 m_Params += c;
             }
+            else if (c == '\'') {
+                while ((i < end_pos) && ((c = source[i++]) != '\'')) m_Params += c;
+                m_Params += c;
+            }
     const char *st = m_Params, *p = par;
     const char *st2, *p2;
     bool comma;
     const char *st = m_Params, *p = par;
     const char *st2, *p2;
     bool comma;
 
     if (*st == 0) return "";
     if (*p == 0) return "";
 
     if (*st == 0) return "";
     if (*p == 0) return "";
             wxString fnd = "";
             st2++; // '=' character
             comma = FALSE;
             wxString fnd = "";
             st2++; // '=' character
             comma = FALSE;
-            if (!with_commas && (*(st2) == '"')) {st2++; comma = TRUE;}
+           comma_char = '\0';
+            if (!with_commas && (*(st2) == '"')) {
+               st2++;
+               comma = TRUE; 
+               comma_char = '"';
+           }
+           else if (!with_commas && (*(st2) == '\'')) {
+               st2++; 
+               comma = TRUE;
+               comma_char = '\'';
+           }
-                if (*st2 == '"') comma = !comma;
+                if (comma && *st2 == comma_char) comma = FALSE;
                 else if ((*st2 == ' ') && (!comma)) break;
                 fnd += (*(st2++));
             }
                 else if ((*st2 == ' ') && (!comma)) break;
                 fnd += (*(st2++));
             }
-            if (!with_commas && (*(st2-1) == '"')) fnd.RemoveLast();
+            if (!with_commas && (*(st2-1) == comma_char)) fnd.RemoveLast();
             return fnd;
         }
         if (*st2 == 0) return "";
             return fnd;
         }
         if (*st2 == 0) return "";
                     st2++;
                     while (*st2 != '"') st2++;
                 }
                     st2++;
                     while (*st2 != '"') st2++;
                 }
+                else if (*st2 == '\'') {
+                    st2++;
+                    while (*st2 != '\'') st2++;
+                }
-void wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const
+int wxHtmlTag::ScanParam(const wxString& par, char *format, ...) const
     va_list argptr;
     wxString parval = GetParam(par);
 
     va_list argptr;
     wxString parval = GetParam(par);
 
 
 //#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__VISUALC__)
 #ifndef HAVE_VSSCANF
 
 //#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__VISUALC__)
 #ifndef HAVE_VSSCANF
-    sscanf((const char*)parval, format, va_arg(argptr, void *));
+    retval = sscanf((const char*)parval, format, va_arg(argptr, void *));
-    vsscanf((const char*)parval, format, argptr);
+    retval = vsscanf((const char*)parval, format, argptr);
-        --- vsscanf is not defined under Cygwin or Mingw32 or M$ Visual C++ environment
+        --- vsscanf is not defined under some compilers
             if this module doesn't compile with your compiler,
             modify the def statement and let me know. Thanks...
         
             if this module doesn't compile with your compiler,
             modify the def statement and let me know. Thanks...
         
 
         if (tag.HasParam("COLOR")) {
            unsigned long tmp = 0; 
             wxColour clr;
         if (tag.HasParam("COLOR")) {
            unsigned long tmp = 0; 
             wxColour clr;
-            tag.ScanParam("COLOR", "#%lX", &tmp);
-            clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-            m_WParser -> SetActualColor(clr);
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr));
+            if (tag.ScanParam("COLOR", "#%lX", &tmp) == 1) {
+                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
+                m_WParser -> SetActualColor(clr);
+                m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr));
+           }
         }
 
         if (tag.HasParam("SIZE")) {
         }
 
         if (tag.HasParam("SIZE")) {
-           // give 'tmp' an initial value. If conversion fails, it will keep this value.
-            tag.ScanParam("SIZE", "%li", &tmp);
-           // We *really* should check the result of (v)sscanf, but ScanParam returns void...
-            m_WParser -> SetFontSize(oldsize+tmp);
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont()));
+            if (tag.ScanParam("SIZE", "%li", &tmp) == 1) {
+                m_WParser -> SetFontSize(oldsize+tmp);
+                m_WParser -> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser -> CreateCurrentFont()));
+           }
 
         c -> SetAlignHor(HTML_ALIGN_CENTER);
         c -> SetAlign(tag);
         c -> SetWidthFloat(tag);
         c -> SetAlignHor(HTML_ALIGN_CENTER);
         c -> SetAlign(tag);
         c -> SetWidthFloat(tag);
-        if (tag.HasParam("SIZE")) tag.ScanParam("SIZE", "%i", &sz);
+        if (tag.HasParam("SIZE") && tag.ScanParam("SIZE", "%i", &sz) == 1) {}
         else sz = 1;
         c -> InsertCell(new wxHtmlLineCell(sz));
 
         else sz = 1;
         c -> InsertCell(new wxHtmlLineCell(sz));
 
 
 {
     wxImage *img;
     int ww, hh;
 {
     wxImage *img;
     int ww, hh;
-    wxString m = input -> GetMimeType();
     wxInputStream *s = input -> GetStream();
 
     wxInputStream *s = input -> GetStream();
 
-    img = new wxImage(*s, m);
+    img = new wxImage(*s, wxBITMAP_TYPE_ANY);
 
     m_Image = NULL;
     if (img && (img -> Ok())) {
 
     m_Image = NULL;
     if (img && (img -> Ok())) {
 
         wxColour clr;
 
         if (tag.HasParam("TEXT")) {
         wxColour clr;
 
         if (tag.HasParam("TEXT")) {
-            tag.ScanParam("TEXT", "#%lX", &tmp);
-            clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-            m_WParser -> SetActualColor(clr);
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr));
-        }
+            if (tag.ScanParam("TEXT", "#%lX", &tmp) == 1) {
+                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
+                m_WParser -> SetActualColor(clr);
+                m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr));
+            }
+       }
 
         if (tag.HasParam("LINK")) {
 
         if (tag.HasParam("LINK")) {
-            tag.ScanParam("LINK", "#%lX", &tmp);
-            clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-            m_WParser -> SetLinkColor(clr);
+            if (tag.ScanParam("LINK", "#%lX", &tmp) == 1) {
+                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
+                m_WParser -> SetLinkColor(clr);
+           }
         }
 
         if (tag.HasParam("BGCOLOR")) {
         }
 
         if (tag.HasParam("BGCOLOR")) {
-            tag.ScanParam("BGCOLOR", "#%lX", &tmp);
-            clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
-            m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr, HTML_CLR_BACKGROUND));
-        if (m_WParser -> GetWindow() != NULL)
-            m_WParser -> GetWindow() -> SetBackgroundColour(clr);
+            if (tag.ScanParam("BGCOLOR", "#%lX", &tmp) == 1) {
+                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
+                m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr, HTML_CLR_BACKGROUND));
+                if (m_WParser -> GetWindow() != NULL)
+                    m_WParser -> GetWindow() -> SetBackgroundColour(clr);
+           }
 
     m_tBkg = m_rBkg = -1;
     if (tag.HasParam("BGCOLOR")) tag.ScanParam("BGCOLOR", "#%lX", &m_tBkg);
     if (tag.HasParam("VALIGN")) m_tValign = tag.GetParam("VALIGN"); else m_tValign = wxEmptyString;
     m_tBkg = m_rBkg = -1;
     if (tag.HasParam("BGCOLOR")) tag.ScanParam("BGCOLOR", "#%lX", &m_tBkg);
     if (tag.HasParam("VALIGN")) m_tValign = tag.GetParam("VALIGN"); else m_tValign = wxEmptyString;
-    if (tag.HasParam("CELLSPACING")) tag.ScanParam("CELLSPACING", "%i", &m_Spacing); else m_Spacing = 2;
-    if (tag.HasParam("CELLPADDING")) tag.ScanParam("CELLPADDING", "%i", &m_Padding); else m_Padding = 3;
+    if (tag.HasParam("CELLSPACING") && tag.ScanParam("CELLSPACING", "%i", &m_Spacing) == 1) {} else m_Spacing = 2;
+    if (tag.HasParam("CELLPADDING") && tag.ScanParam("CELLPADDING", "%i", &m_Padding) == 1) {} else m_Padding = 3;
 
     if (m_HasBorders)
         SetBorder(TABLE_BORDER_CLR_1, TABLE_BORDER_CLR_2);
 
     if (m_HasBorders)
         SetBorder(TABLE_BORDER_CLR_1, TABLE_BORDER_CLR_2);