rx: Make rx_identity_free idempotent 45/13945/3
authorAndrew Deason <adeason@sinenomine.net>
Mon, 9 Sep 2019 19:27:40 +0000 (14:27 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Sat, 21 Dec 2019 01:41:25 +0000 (20:41 -0500)
rx_identity_free sets the given identity to NULL, but it
unconditionally derefs the given identity. Make it a no-op for NULL
identities, to make related cleanup code and destructors simpler.

Change-Id: I863c72be71fb4b3056a2cd8fc2bf19cfb2d5dfbb
Reviewed-on: https://gerrit.openafs.org/13945
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/rx/rx_identity.c

index 3d87ec4..887924f 100644 (file)
@@ -181,9 +181,13 @@ rx_identity_freeContents(struct rx_identity *identity)
  */
 
 void
-rx_identity_free(struct rx_identity **identity)
+rx_identity_free(struct rx_identity **a_identity)
 {
-    rx_identity_freeContents(*identity);
-    rxi_Free(*identity, sizeof(struct rx_identity));
-    *identity = NULL;
+    struct rx_identity *identity = *a_identity;
+    *a_identity = NULL;
+    if (identity == NULL) {
+       return;
+    }
+    rx_identity_freeContents(identity);
+    rxi_Free(identity, sizeof(*identity));
 }