Changeset 3177 for trunk/src


Ignore:
Timestamp:
Mar 21, 2018, 11:06:08 PM (7 years ago)
Author:
bird
Message:

kBuiltinOptEnvDuplicat, append: Fixed allocation bug in kBuiltinOptEnvDuplicate; improved out of memory message so.

Location:
trunk/src/kmk/kmkbuiltin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/kmkbuiltin/append.c

    r3172 r3177  
    123123            pBuf->pszBuf = NULL;
    124124            pBuf->cbBuf  = 0;
     125            pBuf->offBuf = offNew;
    125126            pBuf->fOutOfMemory = 1;
    126127            return;
     
    448449    }
    449450    else
    450         rc = errx(1, "out of memory!");
     451        rc = errx(1, "out of memory for output buffer! (%u needed)", OutBuf.offBuf + 1);
    451452    return rc;
    452453}
  • trunk/src/kmk/kmkbuiltin/common-env-and-cwd-opt.c

    r3173 r3177  
    5858static char **kBuiltinOptEnvDuplicate(char **papszEnv, unsigned cEnvVars, unsigned *pcAllocatedEnvVars, int cVerbosity)
    5959{
    60     unsigned cAllocatedEnvVars = (cEnvVars + 2 + 0xf) * ~(unsigned)0xf;
     60    unsigned cAllocatedEnvVars = (cEnvVars + 2 + 0xf) & ~(unsigned)0xf;
    6161    char    **papszEnvNew      = malloc(cAllocatedEnvVars * sizeof(papszEnvNew[0]));
    6262    assert(*pcAllocatedEnvVars == 0);
     
    7272                    free(papszEnvNew[i]);
    7373                free(papszEnvNew);
    74                 errx(1, "out of memory");
     74                errx(1, "out of memory for duplicating environment variables!", i);
    7575                return NULL;
    7676            }
     
    8080    }
    8181    else
    82         errx(1, "out of memory");
     82        errx(1, "out of memory for duplicating environment vector!");
    8383    return papszEnvNew;
    8484}
     
    109109        papszEnv = (char **)realloc(papszEnv, *pcAllocatedEnvVars * sizeof(papszEnv[0]));
    110110        if (!papszEnv)
    111             return errx(1, "out of memory!");
     111            return errx(1, "out of memory growing environment vector!");
    112112        *ppapszEnv = papszEnv;
    113113    }
    114114    papszEnv[cEnvVars] = strdup(pszValue);
    115115    if (!papszEnv[cEnvVars])
    116         return errx(1, "out of memory!");
     116        return errx(1, "out of memory adding environment variable!");
    117117    papszEnv[++cEnvVars]   = NULL;
    118118    *pcEnvVars = cEnvVars;
     
    181181            papszEnv = kBuiltinOptEnvDuplicate(papszEnv, cEnvVars, pcAllocatedEnvVars, cVerbosity);
    182182            if (!papszEnv)
    183                 return errx(1, "out of memory!");
     183                return errx(1, "out of memory duplicating enviornment (setenv)!");
    184184            *ppapszEnv = papszEnv;
    185185        }
     
    196196                papszEnv[iEnvVar] = strdup(pszValue);
    197197                if (!papszEnv[iEnvVar])
    198                     return errx(1, "out of memory!");
     198                    return errx(1, "out of memory for modified environment variable!");
    199199
    200200                return kBuiltinOptEnvRemoveDuplicates(papszEnv, cEnvVars, cVerbosity, pszValue, cchVar, iEnvVar);
     
    234234            papszEnv = kBuiltinOptEnvDuplicate(papszEnv, cEnvVars, pcAllocatedEnvVars, cVerbosity);
    235235            if (!papszEnv)
    236                 return errx(1, "out of memory!");
     236                return errx(1, "out of memory duplicating environment (append)!");
    237237            *ppapszEnv = papszEnv;
    238238        }
     
    248248                char  *pszNew      = malloc(cchVar + 1 + cchOldValue + cchNewValue + 1);
    249249                if (!pszNew)
    250                     return errx(1, "out of memory!");
     250                    return errx(1, "out of memory appending to environment variable!");
    251251                if (fAppend)
    252252                {
     
    345345                    papszEnv = kBuiltinOptEnvDuplicate(papszEnv, cEnvVars, pcAllocatedEnvVars, cVerbosity);
    346346                    if (!papszEnv)
    347                         return errx(1, "out of memory!");
     347                        return errx(1, "out of memory duplicating environment (unset)!");
    348348                    *ppapszEnv = papszEnv;
    349349                }
Note: See TracChangeset for help on using the changeset viewer.