Revision: 27499
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27499
Author:   campbellbarton
Date:     2010-03-14 22:04:02 +0100 (Sun, 14 Mar 2010)

Log Message:
-----------
disallow 'nan' for button input and pydriver's

Modified Paths:
--------------
    trunk/blender/source/blender/python/intern/bpy_driver.c
    trunk/blender/source/blender/python/intern/bpy_interface.c

Modified: trunk/blender/source/blender/python/intern/bpy_driver.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_driver.c     2010-03-14 
20:24:11 UTC (rev 27498)
+++ trunk/blender/source/blender/python/intern/bpy_driver.c     2010-03-14 
21:04:02 UTC (rev 27499)
@@ -152,7 +152,7 @@
        PyGILState_STATE gilstate;
 
        DriverVar *dvar;
-       float result = 0.0f; /* default return */
+       double result = 0.0; /* default return */
        char *expr = NULL;
        short targets_ok= 1;
        int i;
@@ -163,11 +163,11 @@
        /* get the py expression to be evaluated */
        expr = driver->expression;
        if ((expr == NULL) || (expr[0]=='\0'))
-               return result;
+               return 0.0f;
 
        if(!(G.f & G_SCRIPT_AUTOEXEC)) {
                printf("skipping driver '%s', automatic scripts are 
disabled\n", driver->expression);
-               return result;
+               return 0.0f;
        }
 
        gilstate = PyGILState_Ensure();
@@ -177,7 +177,7 @@
                if (bpy_pydriver_create_dict() != 0) {
                        fprintf(stderr, "Pydriver error: couldn't create Python 
dictionary");
                        PyGILState_Release(gilstate);
-                       return result;
+                       return 0.0f;
                }
        }
 
@@ -238,7 +238,7 @@
                                targets_ok= 0;
                        }
                        
-                       fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add 
variable '%s' to namespace \n", dvar->name);
+                       fprintf(stderr, "\tBPY_pydriver_eval() - couldn't add 
variable '%s' to namespace\n", dvar->name);
                        // BPy_errors_to_report(NULL); // TODO - reports
                        PyErr_Print();
                        PyErr_Clear();
@@ -260,12 +260,10 @@
        /* process the result */
        if (retval == NULL) {
                pydriver_error(driver);
-               result = 0.0f;
-       } else if((result= (float)PyFloat_AsDouble(retval)) == -1.0f && 
PyErr_Occurred()) {
+       } else if((result= PyFloat_AsDouble(retval)) == -1.0 && 
PyErr_Occurred()) {
                pydriver_error(driver);
                Py_DECREF(retval);
-               result = 0.0f;
-
+               result = 0.0;
        }
        else {
                /* all fine, make sure the "invalid expression" flag is cleared 
*/
@@ -274,5 +272,12 @@
        }
 
        PyGILState_Release(gilstate);
-       return result;
+    
+    if(finite(result)) {
+        return (float)result;
+    }
+    else {
+        fprintf(stderr, "\tBPY_pydriver_eval() - driver '%s' evaluates to 
'%f'\n", dvar->name, result);
+        return 0.0f;
+    }
 }

Modified: trunk/blender/source/blender/python/intern/bpy_interface.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_interface.c  2010-03-14 
20:24:11 UTC (rev 27498)
+++ trunk/blender/source/blender/python/intern/bpy_interface.c  2010-03-14 
21:04:02 UTC (rev 27499)
@@ -580,6 +580,9 @@
                if(val==-1 && PyErr_Occurred()) {
                        error_ret= -1;
                }
+               else if (!finite(val)) {
+                       *value= 0.0;
+               }
                else {
                        *value= val;
                }


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to