? contrib/txid/old.txid.c
? contrib/txid/txid.c.xzz
Index: contrib/txid/txid.c
===================================================================
RCS file: /projects/cvsroot/pgsql/contrib/txid/txid.c,v
retrieving revision 1.2
diff -p -u -c -r1.2 txid.c
*** contrib/txid/txid.c	8 Oct 2007 20:25:39 -0000	1.2
--- contrib/txid/txid.c	8 Oct 2007 20:46:13 -0000
*************** static txid
*** 234,257 ****
  str2txid(const char *s, const char **endp)
  {
  	txid val = 0;
  
  	for (; *s; s++)
  	{
! 		txid last = val;
  
  		if (*s < '0' || *s > '9')
  			break;
! 
! 		val = val * 10 + (*s - '0');
  
  		/*
  		 * check for overflow
  		 */
! 		if (val > MAX_TXID || (val / 10) != last)
  		{
  			val = 0;
  			break;
  		}
  	}
  	if (endp)
  		*endp = s;
--- 234,260 ----
  str2txid(const char *s, const char **endp)
  {
  	txid val = 0;
+ 	txid cutoff = MAX_TXID / 10;
+ 	txid cutlim = MAX_TXID % 10;
  
  	for (; *s; s++)
  	{
! 		unsigned d;
  
  		if (*s < '0' || *s > '9')
  			break;
! 		d = *s - '0';
  
  		/*
  		 * check for overflow
  		 */
! 		if (val > cutoff || (val == cutoff && d > cutlim))
  		{
  			val = 0;
  			break;
  		}
+ 
+ 		val = val * 10 + d;
  	}
  	if (endp)
  		*endp = s;
