Updated Cart.php to handle quantity changes differently (now auto-increments), also updated the changelog to reflect this change for the people that are currently using this library
diff --git a/system/libraries/Cart.php b/system/libraries/Cart.php
index a0e1bb9..13485a3 100644
--- a/system/libraries/Cart.php
+++ b/system/libraries/Cart.php
@@ -41,6 +41,7 @@
 	// These are the regular expression rules that we use to validate the product ID and product name
 	var $product_id_rules	= '\.a-z0-9_-'; // alpha-numeric, dashes, underscores, or periods
 	var $product_name_rules	= '\.\:\-_ a-z0-9'; // alpha-numeric, dashes, underscores, colons or periods
+	var $product_name_safe  = true; // only allow safe product names
 
 	// Private variables.  Do not change!
 	var $CI;
@@ -195,10 +196,13 @@
 
 		// Validate the product name. It can only be alpha-numeric, dashes, underscores, colons or periods.
 		// Note: These can be user-specified by setting the $this->product_name_rules variable.
-		if ( ! preg_match("/^[".$this->product_name_rules."]+$/i", $items['name']))
+		if($this->product_name_safe)
 		{
-			log_message('error', 'An invalid name was submitted as the product name: '.$items['name'].' The name can only contain alpha-numeric characters, dashes, underscores, colons, and spaces');
-			return FALSE;
+			if ( ! preg_match("/^[".$this->product_name_rules."]+$/i", $items['name']))
+			{
+				log_message('error', 'An invalid name was submitted as the product name: '.$items['name'].' The name can only contain alpha-numeric characters, dashes, underscores, colons, and spaces');
+				return FALSE;
+			}
 		}
 
 		// --------------------------------------------------------------------
@@ -242,7 +246,18 @@
 		// --------------------------------------------------------------------
 
 		// Now that we have our unique "row ID", we'll add our cart items to the master array
-
+		// grab quantity if it's already there and add it on
+		if(isset($this->_cart_contents[$rowid]['qty']))
+		{
+			// set our old quantity
+			$old_quantity = (int)$this->_cart_contents[$rowid]['qty'];
+		}
+		else
+		{
+			// we have no old quantity but - we don't want to throw an error
+			$old_quantity = 0;
+		}
+		
 		// let's unset this first, just to make sure our index contains only the data from this submission
 		unset($this->_cart_contents[$rowid]);
 
@@ -254,7 +269,10 @@
 		{
 			$this->_cart_contents[$rowid][$key] = $val;
 		}
-
+		
+		// add old quantity back in
+		$this->_cart_contents[$rowid]['qty'] = ($this->_cart_contents[$rowid]['qty'] + $old_quantity);
+		
 		// Woot!
 		return $rowid;
 	}