mirror of
https://github.com/partic2/libffi
synced 2026-11-11 10:37:19 +00:00
Add work-around for users who manage their own closure memory
As suggested by DJ
This commit is contained in:
+9
-1
@@ -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) 2007, 2009, 2010 Free Software Foundation, Inc
|
||||||
Copyright (c) 2011 Plausible Labs Cooperative, Inc.
|
Copyright (c) 2011 Plausible Labs Cooperative, Inc.
|
||||||
|
|
||||||
@@ -936,7 +937,14 @@ void *
|
|||||||
ffi_data_to_code_pointer (void *data)
|
ffi_data_to_code_pointer (void *data)
|
||||||
{
|
{
|
||||||
msegmentptr seg = segment_holding (gm, data);
|
msegmentptr seg = segment_holding (gm, data);
|
||||||
|
/* 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);
|
return add_segment_exec_offset (data, seg);
|
||||||
|
else
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Release a chunk of memory allocated with ffi_closure_alloc. If
|
/* Release a chunk of memory allocated with ffi_closure_alloc. If
|
||||||
|
|||||||
Reference in New Issue
Block a user