I also noticed a bit of unclear / inconsistent code in MemSet() itself: it's not obvious whether unary * or postfix ++ has higher precedence (the latter does), so I added some parentheses to make this clear.
Okay, apparently I'm the only person who doesn't like code like this :) Attached is a revised patch that doesn't make this change.
-Neil
Index: src/backend/access/hash/hashovfl.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/access/hash/hashovfl.c,v
retrieving revision 1.45
diff -c -r1.45 hashovfl.c
*** src/backend/access/hash/hashovfl.c 31 Dec 2004 21:59:13 -0000 1.45
--- src/backend/access/hash/hashovfl.c 10 May 2005 06:42:09 -0000
***************
*** 509,515 ****
/* set all of the bits to 1 */
freep = HashPageGetBitmap(pg);
! MemSet((char *) freep, 0xFF, BMPGSZ_BYTE(metap));
/* write out the new bitmap page (releasing write lock and pin) */
_hash_wrtbuf(rel, buf);
--- 509,515 ----
/* set all of the bits to 1 */
freep = HashPageGetBitmap(pg);
! MemSet(freep, 0xFF, BMPGSZ_BYTE(metap));
/* write out the new bitmap page (releasing write lock and pin) */
_hash_wrtbuf(rel, buf);
Index: src/backend/access/hash/hashpage.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/access/hash/hashpage.c,v
retrieving revision 1.47
diff -c -r1.47 hashpage.c
*** src/backend/access/hash/hashpage.c 31 Dec 2004 21:59:13 -0000 1.47
--- src/backend/access/hash/hashpage.c 10 May 2005 06:42:09 -0000
***************
*** 295,302 ****
metap->hashm_maxbucket = metap->hashm_lowmask = 1; /* nbuckets - 1 */
metap->hashm_highmask = 3; /* (nbuckets << 1) - 1 */
! MemSet((char *) metap->hashm_spares, 0, sizeof(metap->hashm_spares));
! MemSet((char *) metap->hashm_mapp, 0, sizeof(metap->hashm_mapp));
metap->hashm_spares[1] = 1; /* the first bitmap page is only spare */
metap->hashm_ovflpoint = 1;
--- 295,302 ----
metap->hashm_maxbucket = metap->hashm_lowmask = 1; /* nbuckets - 1 */
metap->hashm_highmask = 3; /* (nbuckets << 1) - 1 */
! MemSet(metap->hashm_spares, 0, sizeof(metap->hashm_spares));
! MemSet(metap->hashm_mapp, 0, sizeof(metap->hashm_mapp));
metap->hashm_spares[1] = 1; /* the first bitmap page is only spare */
metap->hashm_ovflpoint = 1;
Index: src/backend/access/hash/hashutil.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/access/hash/hashutil.c,v
retrieving revision 1.41
diff -c -r1.41 hashutil.c
*** src/backend/access/hash/hashutil.c 31 Dec 2004 21:59:13 -0000 1.41
--- src/backend/access/hash/hashutil.c 10 May 2005 06:42:09 -0000
***************
*** 56,62 ****
(sizeof(HashItemData) - sizeof(IndexTupleData));
hitem = (HashItem) palloc(nbytes_hitem);
! memcpy((char *) &(hitem->hash_itup), (char *) itup, tuplen);
return hitem;
}
--- 56,62 ----
(sizeof(HashItemData) - sizeof(IndexTupleData));
hitem = (HashItem) palloc(nbytes_hitem);
! memcpy(&(hitem->hash_itup), itup, tuplen);
return hitem;
}
Index: src/backend/storage/lmgr/lock.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/storage/lmgr/lock.c,v
retrieving revision 1.150
diff -c -r1.150 lock.c
*** src/backend/storage/lmgr/lock.c 29 Apr 2005 22:28:24 -0000 1.150
--- src/backend/storage/lmgr/lock.c 10 May 2005 06:42:09 -0000
***************
*** 551,558 ****
ProcQueueInit(&(lock->waitProcs));
lock->nRequested = 0;
lock->nGranted = 0;
! MemSet((char *) lock->requested, 0, sizeof(int) * MAX_LOCKMODES);
! MemSet((char *) lock->granted, 0, sizeof(int) * MAX_LOCKMODES);
LOCK_PRINT("LockAcquire: new", lock, lockmode);
}
else
--- 551,558 ----
ProcQueueInit(&(lock->waitProcs));
lock->nRequested = 0;
lock->nGranted = 0;
! MemSet(lock->requested, 0, sizeof(int) * MAX_LOCKMODES);
! MemSet(lock->granted, 0, sizeof(int) * MAX_LOCKMODES);
LOCK_PRINT("LockAcquire: new", lock, lockmode);
}
else
Index: src/backend/utils/cache/relcache.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/utils/cache/relcache.c,v
retrieving revision 1.222
diff -c -r1.222 relcache.c
*** src/backend/utils/cache/relcache.c 6 May 2005 17:24:54 -0000 1.222
--- src/backend/utils/cache/relcache.c 10 May 2005 06:42:09 -0000
***************
*** 297,303 ****
/*
* clear all fields of reldesc
*/
! MemSet((char *) relation, 0, sizeof(RelationData));
relation->rd_targblock = InvalidBlockNumber;
/* make sure relation is marked as having no open file yet */
--- 297,303 ----
/*
* clear all fields of reldesc
*/
! MemSet(relation, 0, sizeof(RelationData));
relation->rd_targblock = InvalidBlockNumber;
/* make sure relation is marked as having no open file yet */
***************
*** 315,321 ****
*/
relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE);
! memcpy((char *) relationForm, (char *) relp, CLASS_TUPLE_SIZE);
/* initialize relation tuple form */
relation->rd_rel = relationForm;
--- 315,321 ----
*/
relationForm = (Form_pg_class) palloc(CLASS_TUPLE_SIZE);
! memcpy(relationForm, relp, CLASS_TUPLE_SIZE);
/* initialize relation tuple form */
relation->rd_rel = relationForm;
Index: src/backend/utils/cache/syscache.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/utils/cache/syscache.c,v
retrieving revision 1.98
diff -c -r1.98 syscache.c
*** src/backend/utils/cache/syscache.c 14 Apr 2005 20:03:26 -0000 1.98
--- src/backend/utils/cache/syscache.c 10 May 2005 06:42:09 -0000
***************
*** 455,461 ****
Assert(!CacheInitialized);
! MemSet((char *) SysCache, 0, sizeof(SysCache));
for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
{
--- 455,461 ----
Assert(!CacheInitialized);
! MemSet(SysCache, 0, sizeof(SysCache));
for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
{
Index: src/backend/utils/fmgr/dfmgr.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/backend/utils/fmgr/dfmgr.c,v
retrieving revision 1.79
diff -c -r1.79 dfmgr.c
*** src/backend/utils/fmgr/dfmgr.c 31 Dec 2004 22:01:31 -0000 1.79
--- src/backend/utils/fmgr/dfmgr.c 10 May 2005 06:42:09 -0000
***************
*** 126,132 ****
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
! MemSet((char *) file_scanner, 0, sizeof(DynamicFileList));
strcpy(file_scanner->filename, fullname);
file_scanner->device = stat_buf.st_dev;
#ifndef WIN32
--- 126,132 ----
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("out of memory")));
! MemSet(file_scanner, 0, sizeof(DynamicFileList));
strcpy(file_scanner->filename, fullname);
file_scanner->device = stat_buf.st_dev;
#ifndef WIN32
Index: src/include/c.h
===================================================================
RCS file: /var/lib/cvs/pgsql/src/include/c.h,v
retrieving revision 1.182
diff -c -r1.182 c.h
*** src/include/c.h 28 Apr 2005 21:47:17 -0000 1.182
--- src/include/c.h 10 May 2005 06:48:33 -0000
***************
*** 630,636 ****
#define MemSet(start, val, len) \
do \
{ \
! int32 * _start = (int32 *) (start); \
int _val = (val); \
Size _len = (len); \
\
--- 630,636 ----
#define MemSet(start, val, len) \
do \
{ \
! int32 *_start = (int32 *) (start); \
int _val = (val); \
Size _len = (len); \
\
***************
*** 639,650 ****
_val == 0 && \
_len <= MEMSET_LOOP_LIMIT) \
{ \
! int32 * _stop = (int32 *) ((char *) _start + _len); \
while (_start < _stop) \
*_start++ = 0; \
} \
else \
! memset((char *) _start, _val, _len); \
} while (0)
#define MEMSET_LOOP_LIMIT 1024
--- 639,650 ----
_val == 0 && \
_len <= MEMSET_LOOP_LIMIT) \
{ \
! int32 *_stop = (int32 *) ((char *) _start + _len); \
while (_start < _stop) \
*_start++ = 0; \
} \
else \
! memset(_start, _val, _len); \
} while (0)
#define MEMSET_LOOP_LIMIT 1024
***************
*** 658,664 ****
#define MemSetAligned(start, val, len) \
do \
{ \
! int32 * _start = (int32 *) (start); \
int _val = (val); \
Size _len = (len); \
\
--- 658,664 ----
#define MemSetAligned(start, val, len) \
do \
{ \
! int32 *_start = (int32 *) (start); \
int _val = (val); \
Size _len = (len); \
\
***************
*** 666,677 ****
_val == 0 && \
_len <= MEMSET_LOOP_LIMIT) \
{ \
! int32 * _stop = (int32 *) ((char *) _start + _len); \
while (_start < _stop) \
*_start++ = 0; \
} \
else \
! memset((char *) _start, _val, _len); \
} while (0)
--- 666,677 ----
_val == 0 && \
_len <= MEMSET_LOOP_LIMIT) \
{ \
! int32 *_stop = (int32 *) ((char *) _start + _len); \
while (_start < _stop) \
*_start++ = 0; \
} \
else \
! memset(_start, _val, _len); \
} while (0)
Index: src/interfaces/libpq/fe-protocol2.c
===================================================================
RCS file: /var/lib/cvs/pgsql/src/interfaces/libpq/fe-protocol2.c,v
retrieving revision 1.16
diff -c -r1.16 fe-protocol2.c
*** src/interfaces/libpq/fe-protocol2.c 31 Dec 2004 22:03:50 -0000 1.16
--- src/interfaces/libpq/fe-protocol2.c 10 May 2005 06:42:09 -0000
***************
*** 592,598 ****
{
result->attDescs = (PGresAttDesc *)
pqResultAlloc(result, nfields * sizeof(PGresAttDesc), TRUE);
! MemSet((char *) result->attDescs, 0, nfields * sizeof(PGresAttDesc));
}
/* get type info */
--- 592,598 ----
{
result->attDescs = (PGresAttDesc *)
pqResultAlloc(result, nfields * sizeof(PGresAttDesc), TRUE);
! MemSet(result->attDescs, 0, nfields * sizeof(PGresAttDesc));
}
/* get type info */
***************
*** 667,673 ****
pqResultAlloc(result, nfields * sizeof(PGresAttValue), TRUE);
if (conn->curTuple == NULL)
goto outOfMemory;
! MemSet((char *) conn->curTuple, 0, nfields * sizeof(PGresAttValue));
/*
* If it's binary, fix the column format indicators. We assume
--- 667,673 ----
pqResultAlloc(result, nfields * sizeof(PGresAttValue), TRUE);
if (conn->curTuple == NULL)
goto outOfMemory;
! MemSet(conn->curTuple, 0, nfields * sizeof(PGresAttValue));
/*
* If it's binary, fix the column format indicators. We assume
***************
*** 1409,1415 ****
if (!startpacket)
return NULL;
! MemSet((char *) startpacket, 0, sizeof(StartupPacket));
startpacket->protoVersion = htonl(conn->pversion);
--- 1409,1415 ----
if (!startpacket)
return NULL;
! MemSet(startpacket, 0, sizeof(StartupPacket));
startpacket->protoVersion = htonl(conn->pversion);
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
