diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2017-12-13 20:47:05 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2017-12-14 07:00:42 +0000 |
commit | e86c881a70333af96694dae4310f1ba48e71dd64 (patch) | |
tree | 954d5a93e7de0cbed6f7ceb07bece6a4971b10ad /Lib/d | |
parent | 224bb9e0232a219b7cefd23472b592b39e277f46 (diff) | |
download | swig-e86c881a70333af96694dae4310f1ba48e71dd64.tar.gz |
Fix directorout typemaps which were causing undefined behaviour when returning pointers by reference.
Closes #1167
Diffstat (limited to 'Lib/d')
-rw-r--r-- | Lib/d/dswigtype.swg | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/d/dswigtype.swg b/Lib/d/dswigtype.swg index 19b700052..f0d604b6f 100644 --- a/Lib/d/dswigtype.swg +++ b/Lib/d/dswigtype.swg @@ -185,7 +185,9 @@ %typemap(directorin) SWIGTYPE *const& "$input = (void *) $1;" %typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE *const& - "$result = ($1_ltype)&$input;" +%{ static $*1_ltype swig_temp; + swig_temp = ($*1_ltype)$input; + $result = &swig_temp; %} %typemap(ddirectorin, nativepointer="cast($dtype)$winput" ) SWIGTYPE *const& "($winput is null) ? null : new $*dclassname($winput, false)" |