Fixe bad Python exception catch for C-launched scripts.
* In Hurricane::Viewer::Script::runFunction() & callFunction(), when the script returns NULL, do not immediately return but first check if an exception has been set. If so, print it *then* clear it. Due to not clearing the exception we where seeing one later with no relation to the true problem. * In Oroshi/python/Rules.py, a bad test structure was discarting all the "no layer rule with physical length" in the loading process. It was blocked by the physical unit rule special cases.
This commit is contained in:
parent
41a49809d2
commit
26610ba80c
|
@ -202,6 +202,12 @@ namespace Analog {
|
|||
) << endl;
|
||||
return false;
|
||||
}
|
||||
if (not pCheckOk) {
|
||||
cerr << Error( "%s\n A Python exception has occurred."
|
||||
, _script->getFileName()
|
||||
) << endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -136,15 +136,16 @@ namespace Isobar {
|
|||
_pyArgs = NULL;
|
||||
_pyKw = NULL;
|
||||
|
||||
if (_pyResult == NULL) {
|
||||
cerr << "Something has gone slightly wrong" << endl;
|
||||
}
|
||||
|
||||
if (PyErr_Occurred()) {
|
||||
PyErr_Print();
|
||||
PyErr_Clear();
|
||||
returnCode = false;
|
||||
}
|
||||
|
||||
if (_pyResult == NULL) {
|
||||
cerr << "Something has gone slightly wrong" << endl;
|
||||
}
|
||||
|
||||
finalize();
|
||||
|
||||
return returnCode;
|
||||
|
@ -167,13 +168,16 @@ namespace Isobar {
|
|||
|
||||
_pyResult = PyObject_Call( _pyFunction, pyArgs, NULL );
|
||||
|
||||
if (PyErr_Occurred()) {
|
||||
PyErr_Print();
|
||||
PyErr_Clear();
|
||||
}
|
||||
|
||||
if (_pyResult == NULL) {
|
||||
cerr << "Something has gone slightly wrong" << endl;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (PyErr_Occurred()) PyErr_Print();
|
||||
|
||||
return _pyResult;
|
||||
}
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ class Rules ( object ):
|
|||
, 'corrFactor90'
|
||||
, 'corrFactor135'
|
||||
, 'minRpolyhSquares'
|
||||
]
|
||||
]
|
||||
|
||||
def __init__ ( self, dtr ):
|
||||
trace( 100, '\tRules.__init__()\n' )
|
||||
|
@ -104,13 +104,13 @@ class Rules ( object ):
|
|||
words = attribute.split( '_' )
|
||||
try:
|
||||
if len(words) == 1:
|
||||
if words[0].endswith('Cap' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
if words[0].endswith('ContRes' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
if words[0].endswith('Res' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
if words[0].endswith('ctor90' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
if words[0].endswith('ctor135' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
if words[0].endswith('quares' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
elif len(words) < 4:
|
||||
if words[0].endswith('Cap' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
elif words[0].endswith('ContRes' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
elif words[0].endswith('Res' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
elif words[0].endswith('ctor90' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
elif words[0].endswith('ctor135' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
elif words[0].endswith('quares' ): value = self.dtr.getUnitRule( words[0] ).getValue()
|
||||
if (value is None) and len(words) < 4:
|
||||
value = self.dtr.getPhysicalRule( *tuple(words) ).getValue()
|
||||
except Exception, e:
|
||||
print e
|
||||
|
|
Loading…
Reference in New Issue