summaryrefslogtreecommitdiff
path: root/src/backend/catalog/pg_proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/catalog/pg_proc.c')
-rw-r--r--src/backend/catalog/pg_proc.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index b2559a0e77..d443646724 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.135 2005/10/29 00:31:50 petere Exp $
+ * $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.136 2005/11/17 22:14:51 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -119,12 +119,15 @@ ProcedureCreate(const char *procedureName,
* need to use deconstruct_array() since the array data is just going
* to look like a C array of OID values.
*/
- allParamCount = ARR_DIMS(DatumGetPointer(allParameterTypes))[0];
- if (ARR_NDIM(DatumGetPointer(allParameterTypes)) != 1 ||
+ ArrayType *allParamArray = (ArrayType *) DatumGetPointer(allParameterTypes);
+
+ allParamCount = ARR_DIMS(allParamArray)[0];
+ if (ARR_NDIM(allParamArray) != 1 ||
allParamCount <= 0 ||
- ARR_ELEMTYPE(DatumGetPointer(allParameterTypes)) != OIDOID)
+ ARR_HASNULL(allParamArray) ||
+ ARR_ELEMTYPE(allParamArray) != OIDOID)
elog(ERROR, "allParameterTypes is not a 1-D Oid array");
- allParams = (Oid *) ARR_DATA_PTR(DatumGetPointer(allParameterTypes));
+ allParams = (Oid *) ARR_DATA_PTR(allParamArray);
Assert(allParamCount >= parameterCount);
/* we assume caller got the contents right */
}