diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index 5f2317211c9..093d2b04f8d 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -523,7 +523,7 @@ internal_get_result_type(Oid funcid,
 			{
 				result = TYPEFUNC_COMPOSITE;
 				if (resultTupleDesc)
-					*resultTupleDesc = rsinfo->expectedDesc;
+					*resultTupleDesc = CreateTupleDescCopyConstr(rsinfo->expectedDesc);
 				/* Assume no polymorphic columns here, either */
 			}
 			break;
