Thread (15 messages) flat view 15 messages, 3 authors, 2016-06-15

Re: [PATCH 2/2] Copy resolve_ref() return value for longer use

From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:52:28

Possibly related (same subject, not in this thread)

2011/11/14 Junio C Hamano [off-list ref]:
quoted
diff --git a/builtin/branch.c b/builtin/branch.c
index 0fe9c4d..5b6d839 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -115,8 +115,10 @@ static int branch_merged(int kind, const char *name,
                  branch->merge[0] &&
                  branch->merge[0]->dst &&
                  (reference_name =
-                  resolve_ref(branch->merge[0]->dst, sha1, 1, NULL)) != NULL)
+                  resolve_ref(branch->merge[0]->dst, sha1, 1, NULL)) != NULL) {
+                     reference_name = xstrdup(reference_name);
                      reference_rev = lookup_commit_reference(sha1);
+             }
      }
      if (!reference_rev)
              reference_rev = head_rev;
@@ -141,6 +143,7 @@ static int branch_merged(int kind, const char *name,
                              "         '%s', even though it is merged to HEAD."),
                              name, reference_name);
      }
+     free((char*)reference_name);
      return merged;
 }
Now reference_name stores the result of xstrdup(), it does not have reason
to be of type "const char *". It is preferable to lose the cast here, I
think. The same comment applies to the remainder of the patch.
But resolve_ref() returns "const char *", we need to type cast at
least once, either at resolve_ref() assignment or at free(), until we
change resolve_ref(). Or should we change resolve_ref() to return
"char *" now?
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help