[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Strange code in emacs.c
From: |
Noam Postavsky |
Subject: |
Re: Strange code in emacs.c |
Date: |
Wed, 3 Oct 2018 18:12:45 -0400 |
On Wed, 3 Oct 2018 at 11:15, Eli Zaretskii <address@hidden> wrote:
>
> We have this in 'main':
>
> emacs_re_safe_alloca = max
> (min (lim - extra, SIZE_MAX) * (min_ratio / ratio),
> MAX_ALLOCA);
>
> This always yields MAX_ALLOCA because 'ratio' is always greater than
> 'min_ratio':
>
> int min_ratio = 20 * sizeof (char *);
> int ratio = min_ratio + min_ratio / 3;
Yes, it seems I forgot how integer math works when I wrote that. I
guess that I meant to write it without the parens around the division
(which is approximately the same as your 2 statement suggestion):
emacs_re_safe_alloca = max
(min (lim - extra, SIZE_MAX) * min_ratio / ratio,
MAX_ALLOCA);
Also, I forgot the word "use" in the comment just above:
/* If the stack is big enough, let regex.c more of it before
^
use
falling back to heap allocation. */