Index: contrib/psync/src/main/java/br/com/prognus/psync/engine/source/PIMCalendarSyncSource.java
===================================================================
--- contrib/psync/src/main/java/br/com/prognus/psync/engine/source/PIMCalendarSyncSource.java	(revision 1103)
+++ contrib/psync/src/main/java/br/com/prognus/psync/engine/source/PIMCalendarSyncSource.java	(revision 1545)
@@ -77,5 +77,4 @@
 			this.manager = new PIMCalendarManager(JNDI_DATA_SOURCE_NAME, context.getPrincipal(), context.getSourceQuery());
 		} catch (Exception e) {
-			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
@@ -453,81 +452,89 @@
 	private String hackFix(String text) {
 
-		String result, head, title, clas, description, tail, new_title;
-		int p_categories, p_classes, p_location, p_dstart, values1, values2, op1, op2, op3, op4, op5, op6, op7, op8, qt1, qt2;
-
-		qt1 = 0;
-		qt2 = 0;
-
-		// Pega as posicoes das tags
-		p_categories = text.indexOf("CATEGORIES");
-		p_classes = text.indexOf("CLASS");
-
-		p_location = text.indexOf("LOCATION");
-		p_dstart = text.indexOf("DTSTART");
-
-		// Pega as posicoes das varias formas da tag SUMMARY
-		op1 = text.indexOf("SUMMARY:");
-		op2 = text.indexOf("SUMMARY;CHARSET=UTF-8:");
-		op3 = text.indexOf("SUMMARY;ENCODING=QUOTED-PRINTABLE:");
-		op4 = text.indexOf("SUMMARY;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:");
-
-		// Pega as posicoes das varias formas da tag DESCRIPTION
-		op5 = text.indexOf("DESCRIPTION:");
-		op6 = text.indexOf("DESCRIPTION;CHARSET=UTF-8:");
-		op7 = text.indexOf("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:");
-		op8 = text.indexOf("DESCRIPTION;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:");
-
-		qt1 += (op1 == -1) ? 0 : op1 + 8;
-		qt1 += (op2 == -1) ? 0 : op2 + 22;
-		qt1 += (op3 == -1) ? 0 : op3 + 34;
-		qt1 += (op4 == -1) ? 0 : op4 + 48;
-
-		qt2 += (op5 == -1) ? 0 : op5 + 12;
-		qt2 += (op6 == -1) ? 0 : op6 + 26;
-		qt2 += (op7 == -1) ? 0 : op7 + 38;
-		qt2 += (op8 == -1) ? 0 : op8 + 52;
-
-		values1 = (p_categories == -1) ? p_classes : p_categories;
-		values2 = (p_location == -1) ? p_dstart : p_location;
-
-		head = text.substring(0, qt1);
-		title = text.substring(qt1, values1);
-		clas = text.substring(values1, qt2);
-		description = text.substring(qt2, values2);
-		tail = text.substring(values2);
-
-		new_title = title.replaceAll("\r\n ", " ");
-
-		// Retira os enters no final do titulo
-		int title_t, title_bl;
-
-		while(true){
-			title_t = new_title.length();
-			title_bl = new_title.lastIndexOf("=0D=0A=\r\n");
-
-			if(title_bl != -1 && title_t == title_bl + 11){
-				new_title = new_title.substring(0, title_bl) + "\r\n";
-			} else {
-				break;
-			}
-		}
-
-		// Retira os enters no final da descricao
-		int description_t, description_bl;
-
-		while(true){
-			description_t = description.length();
-			description_bl = description.lastIndexOf("=0D=0A=\r\n");
-
-			if(description_bl != -1 && description_t == description_bl + 11){
-				description = description.substring(0, description_bl) + "\r\n";
-			} else {
-				break;
-			}
-		}
-
-		result = head + new_title + clas + description + tail;
-
-		return result;
+		try {
+		
+			String result, head, title, clas, description, tail, new_title;
+			int p_categories, p_classes, p_location, p_dstart, values1, values2, op1, op2, op3, op4, op5, op6, op7, op8, qt1, qt2;
+	
+			qt1 = 0;
+			qt2 = 0;
+	
+			// Pega as posicoes das tags
+			p_categories = text.indexOf("CATEGORIES");
+			p_classes = text.indexOf("CLASS");
+	
+			p_location = text.indexOf("LOCATION");
+			p_dstart = text.indexOf("DTSTART");
+	
+			// Pega as posicoes das varias formas da tag SUMMARY
+			op1 = text.indexOf("SUMMARY:");
+			op2 = text.indexOf("SUMMARY;CHARSET=UTF-8:");
+			op3 = text.indexOf("SUMMARY;ENCODING=QUOTED-PRINTABLE:");
+			op4 = text.indexOf("SUMMARY;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:");
+	
+			// Pega as posicoes das varias formas da tag DESCRIPTION
+			op5 = text.indexOf("DESCRIPTION:");
+			op6 = text.indexOf("DESCRIPTION;CHARSET=UTF-8:");
+			op7 = text.indexOf("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:");
+			op8 = text.indexOf("DESCRIPTION;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:");
+	
+			qt1 += (op1 == -1) ? 0 : op1 + 8;
+			qt1 += (op2 == -1) ? 0 : op2 + 22;
+			qt1 += (op3 == -1) ? 0 : op3 + 34;
+			qt1 += (op4 == -1) ? 0 : op4 + 48;
+	
+			qt2 += (op5 == -1) ? 0 : op5 + 12;
+			qt2 += (op6 == -1) ? 0 : op6 + 26;
+			qt2 += (op7 == -1) ? 0 : op7 + 38;
+			qt2 += (op8 == -1) ? 0 : op8 + 52;
+	
+			values1 = (p_categories == -1) ? p_classes : p_categories;
+			values2 = (p_location == -1) ? p_dstart : p_location;
+	
+			head = text.substring(0, qt1);
+			title = text.substring(qt1, values1);
+			clas = text.substring(values1, qt2);
+			description = text.substring(qt2, values2);
+			tail = text.substring(values2);
+	
+			new_title = title.replaceAll("\r\n ", " ");
+	
+			// Retira os enters no final do titulo
+			int title_t, title_bl;
+	
+			while(true){
+				title_t = new_title.length();
+				title_bl = new_title.lastIndexOf("=0D=0A=\r\n");
+	
+				if(title_bl != -1 && title_t == title_bl + 11){
+					new_title = new_title.substring(0, title_bl) + "\r\n";
+				} else {
+					break;
+				}
+			}
+	
+			// Retira os enters no final da descricao
+			int description_t, description_bl;
+	
+			while(true){
+				description_t = description.length();
+				description_bl = description.lastIndexOf("=0D=0A=\r\n");
+	
+				if(description_bl != -1 && description_t == description_bl + 11){
+					description = description.substring(0, description_bl) + "\r\n";
+				} else {
+					break;
+				}
+			}
+	
+			result = head + new_title + clas + description + tail;
+
+			return result;
+		}catch (Exception e) {
+			if (log.isTraceEnabled()) {
+				log.trace(e);
+			}
+			return text;
+		}
 	}
 
