 		 */		
 		private function getColumnValues(rows:Array, columnIndex:int, outputArrayOrVector:*):*
 		{
-			outputArrayOrVector.length = rows.length - 1;
+			outputArrayOrVector.length = Math.max(0, rows.length - 1);
 			var i:int;
 			if (columnIndex < 0)
 			{

		}
		
		/**
		 * Called when url session state changes
		 */		
		protected function handleURLChange():void
		{
			if (detectLinkableObjectChange(handleURLChange, url) && url.value)
			{
				// if url is specified, do not use csvDataString
				csvData.setSessionState(null);
				addAsyncResponder(
					WeaveAPI.URLRequestUtils.getURL(this, new URLRequest(url.value), URLLoaderDataFormat.TEXT),
					handleCSVDownload,
					handleCSVDownloadError,
					url.value
				);
			}
		}
		
		/**
		 * This gets called as a grouped callback.
		 */		
		override protected function initialize():void
		{
			handleURLChange();
			
			// recalculate all columns previously requested because CSV data may have changed.
			refreshAllProxyColumns();

			if (url.value)
			{
				// when using url, we don't want to set session state of csvData
				handleParsedRows(csvParser.parseResult);
			}
			else
			{
				csvData.setSessionState(csvParser.parseResult);
			}
		}
		
