Author: fejj
Date: 2008-01-03 15:33:32 -0500 (Thu, 03 Jan 2008)
New Revision: 92204

Modified:
   trunk/moon/plugin/ChangeLog
   trunk/moon/plugin/plugin-class.cpp
Log:
2008-01-03  Jeffrey Stedfast  <[EMAIL PROTECTED]>

        * plugin-class.cpp (_set_dependency_property_value): For
        non-object variants, we can easily get away with using a static
        string buffer rather than using dynamically allocated strings to
        hold our temp values.



Modified: trunk/moon/plugin/ChangeLog
===================================================================
--- trunk/moon/plugin/ChangeLog 2008-01-03 20:16:29 UTC (rev 92203)
+++ trunk/moon/plugin/ChangeLog 2008-01-03 20:33:32 UTC (rev 92204)
@@ -1,3 +1,10 @@
+2008-01-03  Jeffrey Stedfast  <[EMAIL PROTECTED]>
+
+       * plugin-class.cpp (_set_dependency_property_value): For
+       non-object variants, we can easily get away with using a static
+       string buffer rather than using dynamically allocated strings to
+       hold our temp values.
+
 2007-12-26  Rolf Bjarne Kvinge <[EMAIL PROTECTED]> 
 
        * plugin.cpp: PluginInstance::SetSource: don't check if we're setting 
the

Modified: trunk/moon/plugin/plugin-class.cpp
===================================================================
--- trunk/moon/plugin/plugin-class.cpp  2008-01-03 20:16:29 UTC (rev 92203)
+++ trunk/moon/plugin/plugin-class.cpp  2008-01-03 20:33:32 UTC (rev 92204)
@@ -1926,50 +1926,52 @@
                        DEBUG_WARN_NOTIMPLEMENTED ("unhandled object type in 
do.set_property");
                        return true;
                }
-       }
-       else {
-               char *strvalue = NULL;
-
+       } else {
+               const char *strval = NULL;
+               char strbuf[64];
+               
                if (NPVARIANT_IS_BOOLEAN (*value)) {
-                       strvalue = g_strdup (NPVARIANT_TO_BOOLEAN (*value) ? 
"true" : "false");
-               }
-               else if (NPVARIANT_IS_INT32 (*value)) {
-                       strvalue = g_strdup_printf ("%d", NPVARIANT_TO_INT32 
(*value));
-               }
-               else if (NPVARIANT_IS_DOUBLE (*value)) {
-                       strvalue = g_strdup_printf ("%g", NPVARIANT_TO_DOUBLE 
(*value));
-               }
-               else if (NPVARIANT_IS_STRING (*value)) {
-                       strvalue = g_strdup (STR_FROM_VARIANT (*value));
-               }
-               else if (NPVARIANT_IS_NULL (*value)){
-                       DEBUGMSG ("Setting NULL for (%s::%s)", dob->GetTypeName 
(), p->name);
-                       if (p->value_type >= Type::DEPENDENCY_OBJECT){
+                       if (NPVARIANT_TO_BOOLEAN (*value))
+                               strcpy (strbuf, "true");
+                       else
+                               strcpy (strbuf, "false");
+                       
+                       strval = strbuf;
+               } else if (NPVARIANT_IS_INT32 (*value)) {
+                       g_snprintf (strbuf, sizeof (strbuf), "%d", 
NPVARIANT_TO_INT32 (*value));
+                       
+                       strval = strbuf;
+               } else if (NPVARIANT_IS_DOUBLE (*value)) {
+                       g_snprintf (strbuf, sizeof (strbuf), "%g", 
NPVARIANT_TO_DOUBLE (*value));
+                       
+                       strval = strbuf;
+               } else if (NPVARIANT_IS_STRING (*value)) {
+                       strval = STR_FROM_VARIANT (*value);
+               } else if (NPVARIANT_IS_NULL (*value)) {
+                       if (p->value_type >= Type::DEPENDENCY_OBJECT) {
                                DependencyObject *val = NULL;
-
+                               
                                dob->SetValue (p, Value (val));
                        } else if (p->value_type == Type::STRING) {
                                char *val = NULL;
-
+                               
                                dob->SetValue (p, Value (val));
-                       } else
+                       } else {
                                DEBUGWARN ("Setting NULL for unsupported type 
(%s::%s)", dob->GetTypeName (), p->name);
-
-
+                       }
+                       
                        return true;
-               }
-               else if (NPVARIANT_IS_VOID (*value)){
+               } else if (NPVARIANT_IS_VOID (*value)) {
                        DEBUGWARN ("unhandled variant type VOID in 
do.set_property for (%s::%s)", dob->GetTypeName (), p->name);
                        return true;
-               }
-               else {
+               } else {
                        DEBUGWARN ("unhandled variant type in do.set_property 
for (%s::%s)", dob->GetTypeName (), p->name);
                        return true;
                }
-
-               xaml_set_property_from_str (dob, p, strvalue);
-
-               g_free (strvalue);
+               
+               g_assert (strval != NULL);
+               
+               xaml_set_property_from_str (dob, p, strval);
        }
 
        return true;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to