environment: remove namespace_len variable
[gitweb.git] / refs.c
diff --git a/refs.c b/refs.c
index 143936a9c3e5a5db1c41f9c8923c0f05cd99f365..84112c88ee4349ef8c7411f6e046d0f2d289ea04 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -3,6 +3,7 @@
  */
 
 #include "cache.h"
+#include "config.h"
 #include "hashmap.h"
 #include "lockfile.h"
 #include "iterator.h"
@@ -1259,6 +1260,11 @@ struct ref_iterator *refs_ref_iterator_begin(
 {
        struct ref_iterator *iter;
 
+       if (ref_paranoia < 0)
+               ref_paranoia = git_env_bool("GIT_REF_PARANOIA", 0);
+       if (ref_paranoia)
+               flags |= DO_FOR_EACH_INCLUDE_BROKEN;
+
        iter = refs->be->iterator_begin(refs, prefix, flags);
 
        /*
@@ -1709,13 +1715,19 @@ int ref_update_reject_duplicates(struct string_list *refnames,
 
        assert(err);
 
-       for (i = 1; i < n; i++)
-               if (!strcmp(refnames->items[i - 1].string, refnames->items[i].string)) {
+       for (i = 1; i < n; i++) {
+               int cmp = strcmp(refnames->items[i - 1].string,
+                                refnames->items[i].string);
+
+               if (!cmp) {
                        strbuf_addf(err,
                                    "multiple updates for ref '%s' not allowed.",
                                    refnames->items[i].string);
                        return 1;
+               } else if (cmp > 0) {
+                       die("BUG: ref_update_reject_duplicates() received unsorted list");
                }
+       }
        return 0;
 }