From 676446ef90bb281ffdf04081fa0404e76ceffb1a Mon Sep 17 00:00:00 2001 From: Aaron Date: Wed, 5 Sep 2012 11:51:04 -0700 Subject: [PATCH] Made default BagOStuff::incr() function more like memcached. Change-Id: Ia216f20fdcf855448e2f2e4d99667e72c6254f82 --- includes/objectcache/BagOStuff.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/includes/objectcache/BagOStuff.php b/includes/objectcache/BagOStuff.php index 57029a89f5..7bbaff9346 100644 --- a/includes/objectcache/BagOStuff.php +++ b/includes/objectcache/BagOStuff.php @@ -167,19 +167,18 @@ abstract class BagOStuff { * Increase stored value of $key by $value while preserving its TTL * @param $key String: Key to increase * @param $value Integer: Value to add to $key (Default 1) - * @return null if lock is not possible else $key value increased by $value - * @return integer + * @return integer|bool New value or false on failure */ public function incr( $key, $value = 1 ) { if ( !$this->lock( $key ) ) { - return null; + return false; } - - $value = intval( $value ); - - if ( ( $n = $this->get( $key ) ) !== false ) { - $n += $value; - $this->set( $key, $n ); // exptime? + $n = $this->get( $key ); + if ( $this->isInteger( $n ) ) { // key exists? + $n += intval( $value ); + $this->set( $key, max( 0, $n ) ); // exptime? + } else { + $n = false; } $this->unlock( $key ); @@ -220,7 +219,7 @@ abstract class BagOStuff { } /** - * Convert an optionally absolute expiry time to a relative time. If an + * Convert an optionally absolute expiry time to a relative time. If an * absolute time is specified which is in the past, use a short expiry time. * * @param $exptime integer -- 2.20.1