@@ -70,19 +70,21 @@ GBT_VARKEY *
7070gbt_var_key_copy (const GBT_VARKEY_R * u ,bool force_node )
7171{
7272GBT_VARKEY * r = NULL ;
73+ int32 lowersize = VARSIZE (u -> lower );
74+ int32 uppersize = VARSIZE (u -> upper );
7375
7476if (u -> lower == u -> upper && !force_node )
7577{/* leaf key mode */
76- r = (GBT_VARKEY * )palloc (VARSIZE ( u -> lower ) + VARHDRSZ );
77- memcpy (VARDATA (r ),u -> lower ,VARSIZE ( u -> lower ) );
78- SET_VARSIZE (r ,VARSIZE ( u -> lower ) + VARHDRSZ );
78+ r = (GBT_VARKEY * )palloc (lowersize + VARHDRSZ );
79+ memcpy (VARDATA (r ),u -> lower ,lowersize );
80+ SET_VARSIZE (r ,lowersize + VARHDRSZ );
7981}
8082else
8183{/* node key mode */
82- r = (GBT_VARKEY * )palloc (INTALIGN (VARSIZE ( u -> lower )) + VARSIZE ( u -> upper ) + VARHDRSZ );
83- memcpy (VARDATA (r ),u -> lower ,VARSIZE ( u -> lower ) );
84- memcpy (VARDATA (r )+ INTALIGN (VARSIZE ( u -> lower )) ,u -> upper ,VARSIZE ( u -> upper ) );
85- SET_VARSIZE (r ,INTALIGN (VARSIZE ( u -> lower )) + VARSIZE ( u -> upper ) + VARHDRSZ );
84+ r = (GBT_VARKEY * )palloc0 (INTALIGN (lowersize ) + uppersize + VARHDRSZ );
85+ memcpy (VARDATA (r ),u -> lower ,lowersize );
86+ memcpy (VARDATA (r )+ INTALIGN (lowersize ) ,u -> upper ,uppersize );
87+ SET_VARSIZE (r ,INTALIGN (lowersize ) + uppersize + VARHDRSZ );
8688}
8789return r ;
8890}
@@ -201,7 +203,7 @@ gbt_var_node_truncate(const GBT_VARKEY *node, int32 cpf_length, const gbtree_vin
201203len2 = Min (len2 , (cpf_length + 1 ));
202204
203205si = 2 * VARHDRSZ + INTALIGN (len1 + VARHDRSZ )+ len2 ;
204- out = (GBT_VARKEY * )palloc (si );
206+ out = (GBT_VARKEY * )palloc0 (si );
205207SET_VARSIZE (out ,si );
206208
207209memcpy (VARDATA (out ),r .lower ,len1 + VARHDRSZ );