Skip to content

Commit 503a4b7

Browse files
committed
try to prevent TCO in gcc sabotaging stack detection (#300)
1 parent 034f1d7 commit 503a4b7

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

src/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,14 +572,14 @@ static char* findBound(char *from, char *limit, int dir)
572572
than allocating large arrays on the C stack, both via definition and
573573
alloca. */
574574
static SEXP RinitJVM_with_padding(SEXP par, intptr_t padding, char *last) {
575-
char dummy[1];
575+
volatile char dummy[1];
576576
/* reduce the risk that dummy will be optimized out */
577577
dummy[0] = (char) (uintptr_t) &dummy;
578578
padding -= (last - dummy) * R_CStackDir;
579579
if (padding <= 0)
580580
return RinitJVM_real(par, 0);
581581
else
582-
return RinitJVM_with_padding(par, padding, dummy);
582+
return RinitJVM_with_padding(par, padding, (char*) dummy);
583583
}
584584

585585
/* Run RinitJVM with the Java stack workaround */

0 commit comments

Comments
 (0)