VirtualBox

Changeset 3453 in kBuild for trunk/src/kash/eval.c


Ignore:
Timestamp:
Sep 14, 2020 9:28:42 AM (5 years ago)
Author:
bird
Message:

kash: eval: Call expredircleanup before we pop the allocator stack.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/eval.c

    r3449 r3453  
    818818/* Both child and parent exits thru here. */
    819819STATIC void
    820 evalcommand_out(shinstance *psh, int flags, char *lastarg, struct stackmark *smarkp)
     820evalcommand_out(shinstance *psh, int flags, char *lastarg, unsigned expfnamedepth, struct stackmark *smarkp)
    821821{
    822822        if (lastarg)
     
    826826                 */
    827827                setvar(psh, "_", lastarg, 0);
     828        expredircleanup(psh, expfnamedepth);
    828829        popstackmark(psh, smarkp);
    829830
     
    835836/* Called if we forkshell(). */
    836837STATIC void
    837 evalcommand_parent(shinstance *psh, int flags, char *lastarg, struct stackmark *smarkp,
     838evalcommand_parent(shinstance *psh, int flags, char *lastarg, unsigned expfnamedepth, struct stackmark *smarkp,
    838839                   int mode, struct job *jp, int pip[2], struct backcmd *backcmd)
    839840{
     
    847848        FORCEINTON;
    848849
    849         evalcommand_out(psh, flags, lastarg, smarkp);
     850        evalcommand_out(psh, flags, lastarg, expfnamedepth, smarkp);
    850851}
    851852
     
    853854{
    854855        struct stackmark smark;
     856        unsigned expfnamedepth;
    855857
    856858        struct backcmd *backcmd;
     
    10441046        }
    10451047
    1046         evalcommand_out(psh, args->flags, args->lastarg, &args->smark);
     1048        evalcommand_out(psh, args->flags, args->lastarg, args->expfnamedepth, &args->smark);
    10471049}
    10481050
     
    11311133        struct strlist *sp;
    11321134        const char *path = pathval(psh);
    1133         unsigned expfnamedepth;
    11341135
    11351136        /* First expand the arguments. */
     
    11551156        *arglist.lastp = NULL;
    11561157
    1157         expfnamedepth = expredir(psh, cmd->ncmd.redirect);
     1158        args.expfnamedepth = expredir(psh, cmd->ncmd.redirect);
    11581159
    11591160        /* Now do the initial 'name=value' ones we skipped above */
     
    12211222                                psh->exitstatus = 127;
    12221223                                flushout(&psh->errout);
    1223                                 evalcommand_out(psh, flags, args.lastarg, &args.smark);
     1224                                evalcommand_out(psh, flags, args.lastarg, args.expfnamedepth, &args.smark);
    12241225                                return;
    12251226                        }
     
    12741275                forkshell2(psh, jp, cmd, mode, evalcommand_child, cmd,
    12751276                           &args, sizeof(args), evalcommand_setup_child);
    1276                 evalcommand_parent(psh, flags, args.lastarg, &args.smark, mode, jp,
    1277                                   args.pip, backcmd);
     1277                evalcommand_parent(psh, flags, args.lastarg, args.expfnamedepth,
     1278                                   &args.smark, mode, jp, args.pip, backcmd);
    12781279#else
    12791280                if (forkshell(psh, jp, cmd, mode) != 0) {
    1280                         evalcommand_parent(psh, flags, args.lastarg, &args.smark, mode, jp,
    1281                                                            args.pip, backcmd);
    1282                         expredircleanup(psh, expfnamedepth);
     1281                        evalcommand_parent(psh, flags, args.lastarg, args.expfnamedepth,
     1282                                           &args.smark, mode, jp, args.pip, backcmd);
    12831283                        return; /* at end of routine */
    12841284                }
     
    12911291                evalcommand_doit(psh, cmd, &args);
    12921292        }
    1293         expredircleanup(psh, expfnamedepth);
    12941293}
    12951294
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette