*** src/backend/storage/page/bufpage.c	2007-07-14 20:54:04.000000000 +0100
--- src/backend/storage/page/bufpage.c	2007-07-14 20:37:36.000000000 +0100
***************
*** 1180,1186 ****
  			continue;
  
  		/* interested in only redirected lps */
! 		if (!ItemIdIsRedirected(lp))
  			continue;
  
  		offsets[ItemIdGetRedirect(lp) - 1] = offnum;
--- 1180,1186 ----
  			continue;
  
  		/* interested in only redirected lps */
! 		if (!ItemIdIsRedirected(lp) || ItemIdIsRedirectDead(lp))
  			continue;
  
  		offsets[ItemIdGetRedirect(lp) - 1] = offnum;
*** src/include/storage/itemid.h	2007-07-14 20:54:04.000000000 +0100
--- src/include/storage/itemid.h	2007-07-14 20:46:09.000000000 +0100
***************
*** 27,32 ****
--- 27,37 ----
  typedef ItemIdData *ItemId;
  
  /*
+  * Magic lp_off value to mark "redirect dead" line pointers 
+  */
+ #define DeadOffsetNumber		0x7FFF
+ 
+ /*
   * lp_flags contains these flags:
   */
  #define LP_USED			0x01	/* this line pointer is being used */
***************
*** 127,140 ****
  ( \
  	AssertMacro(ItemIdIsValid(itemId)), \
  	(bool) ((ItemIdIsRedirected(itemId)) && \
! 			(ItemIdGetRedirect(itemId) == InvalidOffsetNumber)) \
  )
  
  /* Set itemId to redirect-dead i.e. redirected to itself */
  #define ItemIdSetRedirectDead(itemId) \
  ( \
  	AssertMacro(ItemIdIsValid(itemId)), \
! 	ItemIdSetRedirect((itemId), InvalidOffsetNumber) \
  )
  
  #endif   /* ITEMID_H */
--- 132,145 ----
  ( \
  	AssertMacro(ItemIdIsValid(itemId)), \
  	(bool) ((ItemIdIsRedirected(itemId)) && \
! 			(ItemIdGetRedirect(itemId) == DeadOffsetNumber)) \
  )
  
  /* Set itemId to redirect-dead i.e. redirected to itself */
  #define ItemIdSetRedirectDead(itemId) \
  ( \
  	AssertMacro(ItemIdIsValid(itemId)), \
! 	ItemIdSetRedirect((itemId), DeadOffsetNumber) \
  )
  
  #endif   /* ITEMID_H */
