mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
jerry_init: Calculate structure part address more safely. (#3545)
GCC 9.2 issues a warning-as-error trying to perform a large memset into what it thinks as a single field of a structure. So, instead of taking an address of that field, perform explicit address calculaton using structure address and offset of that field. Fixes #3544. JerryScript-DCO-1.0-Signed-off-by: Paul Sokolovsky paul.sokolovsky@linaro.org
This commit is contained in:
parent
0d7f26e2c4
commit
b044d4ad76
@ -191,7 +191,7 @@ jerry_init (jerry_init_flag_t flags) /**< combination of Jerry flags */
|
|||||||
JERRY_ASSERT (!(JERRY_CONTEXT (status_flags) & ECMA_STATUS_API_AVAILABLE));
|
JERRY_ASSERT (!(JERRY_CONTEXT (status_flags) & ECMA_STATUS_API_AVAILABLE));
|
||||||
|
|
||||||
/* Zero out all non-external members. */
|
/* Zero out all non-external members. */
|
||||||
memset (&JERRY_CONTEXT (JERRY_CONTEXT_FIRST_MEMBER), 0,
|
memset ((char *) &JERRY_CONTEXT_STRUCT + offsetof (jerry_context_t, JERRY_CONTEXT_FIRST_MEMBER), 0,
|
||||||
sizeof (jerry_context_t) - offsetof (jerry_context_t, JERRY_CONTEXT_FIRST_MEMBER));
|
sizeof (jerry_context_t) - offsetof (jerry_context_t, JERRY_CONTEXT_FIRST_MEMBER));
|
||||||
|
|
||||||
JERRY_CONTEXT (jerry_init_flags) = flags;
|
JERRY_CONTEXT (jerry_init_flags) = flags;
|
||||||
|
|||||||
@ -245,6 +245,7 @@ struct jerry_context_t
|
|||||||
* This part is for JerryScript which uses external context.
|
* This part is for JerryScript which uses external context.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define JERRY_CONTEXT_STRUCT (*jerry_port_get_current_context ())
|
||||||
#define JERRY_CONTEXT(field) (jerry_port_get_current_context ()->field)
|
#define JERRY_CONTEXT(field) (jerry_port_get_current_context ()->field)
|
||||||
|
|
||||||
#if !ENABLED (JERRY_SYSTEM_ALLOCATOR)
|
#if !ENABLED (JERRY_SYSTEM_ALLOCATOR)
|
||||||
@ -274,6 +275,11 @@ struct jmem_heap_t
|
|||||||
*/
|
*/
|
||||||
extern jerry_context_t jerry_global_context;
|
extern jerry_context_t jerry_global_context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Config-independent name for context.
|
||||||
|
*/
|
||||||
|
#define JERRY_CONTEXT_STRUCT (jerry_global_context)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a reference to a field in the current context.
|
* Provides a reference to a field in the current context.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user