engine/src/FeedParser.cpp
branchRCL_3
changeset 330 4cf89a7d3476
parent 321 7a0fb290f9c6
child 342 9441fb8fd60d
--- a/engine/src/FeedParser.cpp	Mon Nov 01 22:59:47 2010 +0000
+++ b/engine/src/FeedParser.cpp	Fri Nov 12 15:59:01 2010 +0100
@@ -321,57 +321,64 @@
 		case EStateItemPubDate:
 			DP1("PubDate END: iBuffer='%S'", &iBuffer);
 			if (str.CompareF(KTagPubDate) == 0) {
-				// hack for feeds that don't always write day as two digits
-				TChar five(iBuffer[5]);
-				TChar six(iBuffer[6]);
+				DP1("iBuffer.Length()=%d", iBuffer.Length());
 				
-				if (five.IsDigit() && !six.IsDigit()) {
-					TBuf<KMaxStringBuffer> fix;
-					fix.Copy(iBuffer.Left(4));
-					fix.Append(_L(" 0"));
-					fix.Append(iBuffer.Mid(5));
-					iBuffer.Copy(fix);
-				}
-				// end hack
+				if (iBuffer.Length() > 6)
+					{
+					// hack for feeds that don't always write day as two digits
+					TChar five(iBuffer[5]);
+					TChar six(iBuffer[6]);
+					
+					if (five.IsDigit() && !six.IsDigit()) {
+						TBuf<KMaxStringBuffer> fix;
+						fix.Copy(iBuffer.Left(4));
+						fix.Append(_L(" 0"));
+						fix.Append(iBuffer.Mid(5));
+						iBuffer.Copy(fix);
+					}
+					// end hack
+					}
 				
-				// hack for feeds that write out months in full
-				
-				if (iBuffer[11] != ' ') {
-					TPtrC midPtr = iBuffer.Mid(8);
+				if (iBuffer.Length() > 11)
+					{
+					// hack for feeds that write out months in full
 					
-					int spacePos = midPtr.Find(_L(" "));
-					
-					if (spacePos != KErrNotFound) {
-						//DP1("Month: %S", &midPtr.Left(spacePos));
+					if (iBuffer[11] != ' ') {
+						TPtrC midPtr = iBuffer.Mid(8);
+						
+						int spacePos = midPtr.Find(_L(" "));
 						
-						TBuf16<KBufferLength> newBuffer;
-						newBuffer.Copy(iBuffer.Left(11));
-						newBuffer.Append(_L(" "));
-						newBuffer.Append(iBuffer.Mid(11+spacePos));
-						//DP1("newBuffer: %S", &newBuffer);
-						iBuffer.Copy(newBuffer);
+						if (spacePos != KErrNotFound) {
+							//DP1("Month: %S", &midPtr.Left(spacePos));
+							
+							TBuf16<KBufferLength> newBuffer;
+							newBuffer.Copy(iBuffer.Left(11));
+							newBuffer.Append(_L(" "));
+							newBuffer.Append(iBuffer.Mid(11+spacePos));
+							//DP1("newBuffer: %S", &newBuffer);
+							iBuffer.Copy(newBuffer);
+						}
 					}
-				}
-				
-				// hack for feeds that write days and months as UPPERCASE
-				TChar one(iBuffer[1]);
-				TChar two(iBuffer[2]);
-				TChar nine(iBuffer[9]);
-				TChar ten(iBuffer[10]);
+					
+					// hack for feeds that write days and months as UPPERCASE
+					TChar one(iBuffer[1]);
+					TChar two(iBuffer[2]);
+					TChar nine(iBuffer[9]);
+					TChar ten(iBuffer[10]);
+	
+					one.LowerCase();
+					two.LowerCase();
+					nine.LowerCase();
+					ten.LowerCase();
+					
+					iBuffer[1] = one;
+					iBuffer[2] = two;
+					iBuffer[9] = nine;
+					iBuffer[10] = ten;
+					}
 
-				one.LowerCase();
-				two.LowerCase();
-				nine.LowerCase();
-				ten.LowerCase();
-				
-				iBuffer[1] = one;
-				iBuffer[2] = two;
-				iBuffer[9] = nine;
-				iBuffer[10] = ten;
-				
 				TBuf8<128> temp;
 				temp.Copy(iBuffer);
-
 				TInternetDate internetDate;
 				TRAPD(parseError, internetDate.SetDateL(temp));
 				if(parseError == KErrNone) {