| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Converting a CLR value to Python can throw after the call has succeeded, eg if an encoder's TryEncode throws, or if calling enumerator.Current throws. Previously the exception was never converted to a Python exception making it uncatchable even instead, so Python code could not catch it, not even using except BaseException - MethodBinder.Invoke guarded only the invocation, and converted the result and out parameters after its try/catch - Iterator.tp_iternext guarded MoveNext but not Current or the conversion of the item - ArrayObject indexing converted items with no guard at all Each now reports the failure through Exceptions.SetError, as the existing catch already does for the call itself. Property and field getters already convert inside their try and are unchanged.
|
Thanks a lot. If all is well, I will merge this and release an rc2 today. |
Sorry, something went wrong.
|
ok no worries - I have another one that I'll create shortly... related to disallowing certain .net types to be handed over to python |
Sorry, something went wrong.
|
however, the other change I want to submit builds off this one - but this one seemed useful in an of itself, so I submitted it separately. should I wait for this one to be accepted before submitting the other PR? |
Sorry, something went wrong.
|
Just go ahead. I won't have time before afternoon for a proper review. |
Sorry, something went wrong.
|
This is not the right fix for the issue as it spreads to other paths. There's only one call site for TryEncode: pythonnet/src/runtime/Converter.cs Line 135 in 89170a4 Why wasn't it modified? |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
What does this implement/fix? Explain your changes.
Converting a CLR value to Python can throw after the call has succeeded, eg if an encoder's TryEncode throws, or if calling enumerator.Current throws. Previously the exception was never converted to a Python exception making it uncatchable even instead, so Python code could not catch it, not even using except BaseException
Each now reports the failure through Exceptions.SetError, as the existing catch already does for the call itself. Property and field getters already convert inside their try and are unchanged.
Checklist
Check all those that are applicable and complete.