mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-07-31 08:46:30 +08:00
The Handle_Return_Ref specialization for const references was wrapping return values in std::cref() while marking them as return values (is_return_value=true). This caused Vector.push_back() to store the reference directly without cloning, since it assumes return values are freshly created temporaries. When the source object (e.g., a map) went out of scope, the vector contained dangling references to freed memory. The fix sets is_return_value=false for const reference returns, which correctly triggers push_back to clone the value instead of storing a bare reference. This is consistent with the non-const reference handler (Handle_Return<Ret &>) which also does not set the return value flag. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| any.hpp | ||
| bad_boxed_cast.hpp | ||
| bind_first.hpp | ||
| bootstrap_stl.hpp | ||
| bootstrap.hpp | ||
| boxed_cast_helper.hpp | ||
| boxed_cast.hpp | ||
| boxed_number.hpp | ||
| boxed_value.hpp | ||
| callable_traits.hpp | ||
| dispatchkit.hpp | ||
| dynamic_object_detail.hpp | ||
| dynamic_object.hpp | ||
| exception_specification.hpp | ||
| function_call_detail.hpp | ||
| function_call.hpp | ||
| function_params.hpp | ||
| function_signature.hpp | ||
| handle_return.hpp | ||
| operators.hpp | ||
| proxy_constructors.hpp | ||
| proxy_functions_detail.hpp | ||
| proxy_functions.hpp | ||
| register_function.hpp | ||
| short_alloc.hpp | ||
| type_conversions.hpp | ||
| type_info.hpp | ||