Add work-around for users who manage their own closure memory

As suggested by DJ
This commit is contained in:
Anthony Green
2019-11-20 06:15:55 -05:00
parent bd3a4687c0
commit 31543c799a
+10 -2
View File
@@ -1,5 +1,6 @@
/* -----------------------------------------------------------------------
closures.c - Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
closures.c - Copyright (c) 2019 Anthony Green
Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc
Copyright (c) 2011 Plausible Labs Cooperative, Inc.
@@ -936,7 +937,14 @@ void *
ffi_data_to_code_pointer (void *data)
{
msegmentptr seg = segment_holding (gm, data);
return add_segment_exec_offset (data, seg);
/* We expect closures to be allocated with ffi_closure_alloc(), in
which case seg will be non-NULL. However, some users take on the
burden of managing this memory themselves, in which case this
we'll just return data. */
if (seg)
return add_segment_exec_offset (data, seg);
else
return data;
}
/* Release a chunk of memory allocated with ffi_closure_alloc. If