diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 681a57300..b1b458515 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2015-12-14 Sebastian Huber + + * libc/include/sys/reent.h (_REENT_INIT_PTR_ZEROED): New. + (_REENT_INIT_PTR): Define only once and use _REENT_INIT_PTR_ZEROED(). + 2015-12-14 Sebastian Huber * libc/include/sys/_sigset.h: New. diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index ce5b3eda7..5481ca234 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -446,9 +446,8 @@ extern const struct __sFILE_fake __sf_fake_stderr; _NULL \ } -#define _REENT_INIT_PTR(var) \ - { memset((var), 0, sizeof(*(var))); \ - (var)->_stdin = (__FILE *)&__sf_fake_stdin; \ +#define _REENT_INIT_PTR_ZEROED(var) \ + { (var)->_stdin = (__FILE *)&__sf_fake_stdin; \ (var)->_stdout = (__FILE *)&__sf_fake_stdout; \ (var)->_stderr = (__FILE *)&__sf_fake_stderr; \ (var)->_current_locale = "C"; \ @@ -694,9 +693,8 @@ struct _reent {_NULL, 0, _NULL} \ } -#define _REENT_INIT_PTR(var) \ - { memset((var), 0, sizeof(*(var))); \ - (var)->_stdin = &(var)->__sf[0]; \ +#define _REENT_INIT_PTR_ZEROED(var) \ + { (var)->_stdin = &(var)->__sf[0]; \ (var)->_stdout = &(var)->__sf[1]; \ (var)->_stderr = &(var)->__sf[2]; \ (var)->_current_locale = "C"; \ @@ -745,6 +743,11 @@ struct _reent #endif /* !_REENT_SMALL */ +#define _REENT_INIT_PTR(var) \ + { memset((var), 0, sizeof(*(var))); \ + _REENT_INIT_PTR_ZEROED(var); \ + } + /* This value is used in stdlib/misc.c. reent/reent.c has to know it as well to make sure the freelist is correctly free'd. Therefore we define it here, rather than in stdlib/misc.c, as before. */