]> git.ipfire.org Git - thirdparty/git.git/blobdiff - config.c
make config --add behave correctly for empty and NULL values
[thirdparty/git.git] / config.c
index 5272fc6f0b0c3825650c8b0fcca91415af62f43e..ffe010423d6a44bb12218ded95c4e86dfed8848d 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1233,7 +1233,7 @@ static int matches(const char *key, const char *value)
        return !strcmp(key, store.key) &&
                (store.value_regex == NULL ||
                 (store.do_not_match ^
-                 !regexec(store.value_regex, value, 0, NULL, 0)));
+                 (value && !regexec(store.value_regex, value, 0, NULL, 0))));
 }
 
 static int store_aux(const char *key, const char *value, void *cb)
@@ -1538,7 +1538,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
         * The lock serves a purpose in addition to locking: the new
         * contents of .git/config will be written into it.
         */
-       lock = xcalloc(sizeof(struct lock_file), 1);
+       lock = xcalloc(1, sizeof(struct lock_file));
        fd = hold_lock_file_for_update(lock, config_filename, 0);
        if (fd < 0) {
                error("could not lock config file %s: %s", config_filename, strerror(errno));
@@ -1793,7 +1793,7 @@ int git_config_rename_section_in_file(const char *config_filename,
        if (!config_filename)
                config_filename = filename_buf = git_pathdup("config");
 
-       lock = xcalloc(sizeof(struct lock_file), 1);
+       lock = xcalloc(1, sizeof(struct lock_file));
        out_fd = hold_lock_file_for_update(lock, config_filename, 0);
        if (out_fd < 0) {
                ret = error("could not lock config file %s", config_filename);