Changeset 2290 for trunk/src/kash/var.c


Ignore:
Timestamp:
Feb 27, 2009, 5:08:07 AM (16 years ago)
Author:
bird
Message:

kash: malloc/free/friends gets a psh.

File:
1 edited

Legend:

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

    r1233 r2290  
    209209        struct var **vpp;
    210210#ifdef PC_OS2_LIBPATHS
    211         char *psz = ckmalloc(2048);
     211        char *psz = ckmalloc(psh, 2048);
    212212        int rc;
    213213        int i;
     
    232232                        int cch1 = strlen(libpath_envs[i]);
    233233                        int cch2 = strlen(psz) + 1;
    234                         psh->libpath_vars[i].text = ckmalloc(cch1 + cch2);
     234                        psh->libpath_vars[i].text = ckmalloc(psh, cch1 + cch2);
    235235                        memcpy(psh->libpath_vars[i].text, libpath_envs[i], cch1);
    236236                        memcpy(psh->libpath_vars[i].text + cch1, psz, cch2);
     
    246246                *vpp = &psh->libpath_vars[i];
    247247        }
    248         free(psz);
     248        ckfree(psh, psz);
    249249#endif
    250250
     
    332332                len += strlen(val);
    333333        }
    334         d = nameeq = ckmalloc(len);
     334        d = nameeq = ckmalloc(psh, len);
    335335        q = name;
    336336        while (--namelen >= 0)
     
    372372
    373373                if ((vp->flags & (VTEXTFIXED|VSTACK)) == 0)
    374                         ckfree(vp->text);
     374                        ckfree(psh, vp->text);
    375375
    376376                vp->flags &= ~(VTEXTFIXED|VSTACK|VUNSET);
     
    394394        if (flags & VNOSET)
    395395                return;
    396         vp = ckmalloc(sizeof (*vp));
     396        vp = ckmalloc(psh, sizeof (*vp));
    397397        vp->flags = flags & ~VNOFUNC;
    398398        vp->text = s;
     
    416416        INTOFF;
    417417        for (lp = list ; lp ; lp = lp->next) {
    418                 setvareq(psh, savestr(lp->text), flags);
     418                setvareq(psh, savestr(psh, lp->text), flags);
    419419        }
    420420        INTON;
     
    539539                                *prev = vp->next;
    540540                                if ((vp->flags & VTEXTFIXED) == 0)
    541                                         ckfree(vp->text);
     541                                        ckfree(psh, vp->text);
    542542                                if ((vp->flags & VSTRFIXED) == 0)
    543                                         ckfree(vp);
     543                                        ckfree(psh, vp);
    544544                        } else {
    545545                                if (vp->flags & VSTACK) {
    546                                         vp->text = savestr(vp->text);
     546                                        vp->text = savestr(psh, vp->text);
    547547                                        vp->flags &=~ VSTACK;
    548548                                }
     
    618618        if (!list) {
    619619                list_len = 32;
    620                 list = ckmalloc(list_len * sizeof(*list));
     620                list = ckmalloc(psh, list_len * sizeof(*list));
    621621        }
    622622
     
    628628                                continue;
    629629                        if (count >= list_len) {
    630                                 list = ckrealloc(list,
     630                                list = ckrealloc(psh, list,
    631631                                        (list_len << 1) * sizeof(*list));
    632632                                list_len <<= 1;
     
    723723
    724724        INTOFF;
    725         lvp = ckmalloc(sizeof (struct localvar));
     725        lvp = ckmalloc(psh, sizeof (struct localvar));
    726726        if (name[0] == '-' && name[1] == '\0') {
    727727                char *p;
    728                 p = ckmalloc(sizeof_optlist);
     728                p = ckmalloc(psh, sizeof_optlist);
    729729                lvp->text = memcpy(p, psh->optlist, sizeof_optlist);
    730730                vp = NULL;
     
    733733                if (vp == NULL) {
    734734                        if (strchr(name, '='))
    735                                 setvareq(psh, savestr(name), VSTRFIXED|flags);
     735                                setvareq(psh, savestr(psh, name), VSTRFIXED|flags);
    736736                        else
    737737                                setvar(psh, name, NULL, VSTRFIXED|flags);
     
    744744                        vp->flags |= VSTRFIXED|VTEXTFIXED;
    745745                        if (name[vp->name_len] == '=')
    746                                 setvareq(psh, savestr(name), flags);
     746                                setvareq(psh, savestr(psh, name), flags);
    747747                }
    748748        }
     
    770770                if (vp == NULL) {       /* $- saved */
    771771                        memcpy(psh->optlist, lvp->text, sizeof_optlist);
    772                         ckfree(lvp->text);
     772                        ckfree(psh, lvp->text);
    773773                } else if ((lvp->flags & (VUNSET|VSTRFIXED)) == VUNSET) {
    774774                        (void)unsetvar(psh, vp->text, 0);
     
    777777                                (*vp->func)(psh, lvp->text + vp->name_len + 1);
    778778                        if ((vp->flags & VTEXTFIXED) == 0)
    779                                 ckfree(vp->text);
     779                                ckfree(psh, vp->text);
    780780                        vp->flags = lvp->flags;
    781781                        vp->text = lvp->text;
    782782                }
    783                 ckfree(lvp);
     783                ckfree(psh, lvp);
    784784        }
    785785}
     
    860860                if ((vp->flags & VSTRFIXED) == 0) {
    861861                        if ((vp->flags & VTEXTFIXED) == 0)
    862                                 ckfree(vp->text);
     862                                ckfree(psh, vp->text);
    863863                        *vpp = vp->next;
    864                         ckfree(vp);
     864                        ckfree(psh, vp);
    865865                }
    866866        }
Note: See TracChangeset for help on using the changeset viewer.