git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCHv4 6/6] is_submodule_modified(): clear environment properly

From
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Date
Feb 24, 2010, 10:07 UTC
Message-ID
<cb7bb73a1002240207u39176830scfa773b3e7d5c56@mail.gmail.com>
In-Reply-To
<4B84EEF2.2030502@viscovery.net>
On Wed, Feb 24, 2010 at 10:18 AM, Johannes Sixt <j.sixt@viscovery.net> wrote:
Show 17 quoted lines
> Giuseppe Bilotta schrieb:
>> On Wed, Feb 24, 2010 at 9:06 AM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>>> Giuseppe Bilotta schrieb:
>>>> +     const char *env[local_repo_env_size+2];
>>> Variable sized arrays are prohibited.
>>
>> Ah, sorry. Is alloca() allowed? I don't see it being used anywhere
>> else in the code, and malloc would be a little too much for this case.
>
> in cache.h:
>
> #define LOCAL_REPO_ENV_CAPACITY 20
> const char *const l_r_e[];
>
> in environtment.c:
>
> const char *const l_r_e[LOCAL_REPO_ENV_CAPACITY] = { ..., NULL };

What I don't like about this approach is that (1) it allocates more memory than necessary and (2) it requires recompiling everything if LOCAL_REPO_ENV_CAPACITY changes (since it's defined in cache.h which is included basically everywhere. Admittedly (2) is _very_ unlikely to happen if the #define is set large enough, but still ...

> and the compiler will croak if the constant becomes too small. (Oh, I
> know, you must use the 'inconsistent mode' that I nit-picked if you use
> this approach.)

(BTW, that approach requires slightly less index juggling and less C code than a indexed for loop, so I kept it anyway, with a slightly more expanded comment).

-- 
Giuseppe "Oblomov" Bilotta
Previous: Johannes Sixt
Message 15 of 15 in “[PATCHv4 0/6] repo-local env vars handling”
  1. Giuseppe BilottaFeb 24, 2010
  2. 1/6 environment: static list of repo-local env varsGiuseppe Bilotta, Feb 24, 2010
  3. Junio C HamanoFeb 24, 2010
  4. Giuseppe BilottaFeb 24, 2010
  5. Junio C HamanoFeb 24, 2010
  6. Giuseppe BilottaFeb 24, 2010
  7. 2/6 connect: use static list of repo-local env varsGiuseppe Bilotta, Feb 24, 2010
  8. 3/6 rev-parse: --local-env-vars optionGiuseppe Bilotta, Feb 24, 2010
  9. 4/6 shell setup: clear_local_git_env() functionGiuseppe Bilotta, Feb 24, 2010
  10. 5/6 submodules: ensure clean environment when operating in a submoduleGiuseppe Bilotta, Feb 24, 2010
  11. 6/6 is_submodule_modified(): clear environment properlyGiuseppe Bilotta, Feb 24, 2010
  12. Johannes SixtFeb 24, 2010
  13. Giuseppe BilottaFeb 24, 2010
  14. Johannes SixtFeb 24, 2010
  15. Giuseppe BilottaFeb 24, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.