refs: add an update_ref_oid function.

Several places around the codebase want to pass update_ref data from struct object_id, but update_ref may also be passed NULL pointers. Instead of checking and dereferencing in every caller, create an update_ref_oid which wraps update_ref and provides this functionality. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

brian m. carlson committed Sep 5, 2016 at 20:08 UTC 8f6dc7e32eee2944d1490ff9bf12ec329f3b33c2
2 files changed +11
refs.c
+8
@@ -858,6 +858,14 @@ int ref_transaction_verify(struct ref_transaction *transaction,
858 flags, NULL, err);
859 }
860
861 +int update_ref_oid(const char *msg, const char *refname,
862 + const struct object_id *new_oid, const struct object_id *old_oid,
863 + unsigned int flags, enum action_on_err onerr)
864 +{
865 + return update_ref(msg, refname, new_oid ? new_oid->hash : NULL,
866 + old_oid ? old_oid->hash : NULL, flags, onerr);
867 +}
868 +
869 int update_ref(const char *msg, const char *refname,
870 const unsigned char *new_sha1, const unsigned char *old_sha1,
871 unsigned int flags, enum action_on_err onerr)
refs.h
+3
@@ -477,6 +477,9 @@ void ref_transaction_free(struct ref_transaction *transaction);
477 int update_ref(const char *msg, const char *refname,
478 const unsigned char *new_sha1, const unsigned char *old_sha1,
479 unsigned int flags, enum action_on_err onerr);
480 +int update_ref_oid(const char *msg, const char *refname,
481 + const struct object_id *new_oid, const struct object_id *old_oid,
482 + unsigned int flags, enum action_on_err onerr);
483
484 int parse_hide_refs_config(const char *var, const char *value, const char *);
485