• oremanj's avatar
    Fix potential crash when calling an overloaded function (#1327) · e7761e33
    oremanj authored
    * Fix potential crash when calling an overloaded function
    
    The crash would occur if:
    - dispatcher() uses two-pass logic (because the target is overloaded and some arguments support conversions)
    - the first pass (with conversions disabled) doesn't find any matching overload
    - the second pass does find a matching overload, but its return value can't be converted to Python
    
    The code for formatting the error message assumed `it` still pointed to the selected overload,
    but during the second-pass loop `it` was nullptr. Fix by setting `it` correctly if a second-pass
    call returns a nullptr `handle`. Add a new test that segfaults without this fix.
    
    * Make overload iteration const-correct so we don't have to iterate again on second-pass error
    
    * Change test_error_after_conversions dependencies to local classes/variables
    e7761e33
test_class.cpp 16.5 KB