diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 6b5e891e14dcc2624c16f1c207fcd70ab9b04d62..0fcbed66fcfca90f32411a96cee0d44beff3c645 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -576,7 +576,7 @@ static int prepare_application_metadata(grpc_call *call, int count,
   }
   if (i != count) {
     for (int j = 0; j <= i; j++) {
-      grpc_metadata *md = &metadata[i];
+      grpc_metadata *md = &metadata[j];
       grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
       GRPC_MDELEM_UNREF(l->md);
     }