[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27499] trunk/blender/source/blender/ python/intern: disallow 'nan' for button input and pydriver's
Campbell Barton
ideasman42 at gmail.com
Sun Mar 14 22:04:04 CET 2010
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;
}
More information about the Bf-blender-cvs
mailing list