@@ -105,13 +105,13 @@ delete(PG_FUNCTION_ARGS)
105
105
{
106
106
HStore * hs = PG_GETARG_HS (0 );
107
107
text * key = PG_GETARG_TEXT_P (1 );
108
- HStore * out = palloc (hs -> len );
108
+ HStore * out = palloc (VARSIZE ( hs ) );
109
109
char * ptrs ,
110
110
* ptrd ;
111
111
HEntry * es ,
112
112
* ed ;
113
113
114
- out -> len = hs -> len ;
114
+ SET_VARSIZE ( out , VARSIZE ( hs )) ;
115
115
out -> size = hs -> size ;/* temporary! */
116
116
117
117
ptrs = STRPTR (hs );
@@ -142,7 +142,7 @@ delete(PG_FUNCTION_ARGS)
142
142
out -> size = ed - ARRPTR (out );
143
143
144
144
memmove (STRPTR (out ),ptrd ,buflen );
145
- out -> len = CALCDATASIZE (out -> size ,buflen );
145
+ SET_VARSIZE ( out , CALCDATASIZE (out -> size ,buflen ) );
146
146
}
147
147
148
148
@@ -159,15 +159,15 @@ hs_concat(PG_FUNCTION_ARGS)
159
159
{
160
160
HStore * s1 = PG_GETARG_HS (0 );
161
161
HStore * s2 = PG_GETARG_HS (1 );
162
- HStore * out = palloc (s1 -> len + s2 -> len );
162
+ HStore * out = palloc (VARSIZE ( s1 ) + VARSIZE ( s2 ) );
163
163
char * ps1 ,
164
164
* ps2 ,
165
165
* pd ;
166
166
HEntry * es1 ,
167
167
* es2 ,
168
168
* ed ;
169
169
170
- out -> len = s1 -> len + s2 -> len ;
170
+ SET_VARSIZE ( out , VARSIZE ( s1 ) + VARSIZE ( s2 )) ;
171
171
out -> size = s1 -> size + s2 -> size ;
172
172
173
173
ps1 = STRPTR (s1 );
@@ -256,7 +256,7 @@ hs_concat(PG_FUNCTION_ARGS)
256
256
out -> size = ed - ARRPTR (out );
257
257
258
258
memmove (STRPTR (out ),pd ,buflen );
259
- out -> len = CALCDATASIZE (out -> size ,buflen );
259
+ SET_VARSIZE ( out , CALCDATASIZE (out -> size ,buflen ) );
260
260
}
261
261
262
262
PG_FREE_IF_COPY (s1 ,0 );
@@ -277,7 +277,7 @@ tconvert(PG_FUNCTION_ARGS)
277
277
278
278
len = CALCDATASIZE (1 ,VARSIZE (key )+ VARSIZE (val )- 2 * VARHDRSZ );
279
279
out = palloc (len );
280
- out -> len = len ;
280
+ SET_VARSIZE ( out , len ) ;
281
281
out -> size = 1 ;
282
282
283
283
ARRPTR (out )-> keylen = VARSIZE (key )- VARHDRSZ ;
@@ -399,8 +399,8 @@ setup_firstcall(FuncCallContext *funcctx, HStore * hs)
399
399
400
400
st = (AKStore * )palloc (sizeof (AKStore ));
401
401
st -> i = 0 ;
402
- st -> hs = (HStore * )palloc (hs -> len );
403
- memcpy (st -> hs ,hs ,hs -> len );
402
+ st -> hs = (HStore * )palloc (VARSIZE ( hs ) );
403
+ memcpy (st -> hs ,hs ,VARSIZE ( hs ) );
404
404
405
405
funcctx -> user_fctx = (void * )st ;
406
406
MemoryContextSwitchTo (oldcontext );
@@ -568,8 +568,8 @@ each(PG_FUNCTION_ARGS)
568
568
oldcontext = MemoryContextSwitchTo (funcctx -> multi_call_memory_ctx );
569
569
st = (AKStore * )palloc (sizeof (AKStore ));
570
570
st -> i = 0 ;
571
- st -> hs = (HStore * )palloc (hs -> len );
572
- memcpy (st -> hs ,hs ,hs -> len );
571
+ st -> hs = (HStore * )palloc (VARSIZE ( hs ) );
572
+ memcpy (st -> hs ,hs ,VARSIZE ( hs ) );
573
573
funcctx -> user_fctx = (void * )st ;
574
574
575
575
tupdesc = RelationNameGetTupleDesc ("hs_each" );