diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI12To21HtmlHandler.java b/src/main/java/org/olat/ims/qti21/pool/QTI12To21HtmlHandler.java
index f1b086190d8fc49ba668aaf92089390bd664cda7..f8d2786d662d69354cad6e24ff944a7338a485e7 100644
--- a/src/main/java/org/olat/ims/qti21/pool/QTI12To21HtmlHandler.java
+++ b/src/main/java/org/olat/ims/qti21/pool/QTI12To21HtmlHandler.java
@@ -48,7 +48,7 @@ class QTI12To21HtmlHandler extends DefaultHandler {
 	private final XMLStreamWriter xtw;
 
 	private int subLevel = 0;
-	private Deque<String> skipTags = new ArrayDeque<String>();
+	private Deque<String> skipTags = new ArrayDeque<>();
 	private Map<String,String> materialsMapping = new HashMap<>();
 
 	private boolean envelopP = false;
@@ -157,6 +157,9 @@ class QTI12To21HtmlHandler extends DefaultHandler {
 				if(start < 0) {
 					start = 0;//Bug neko
 				}
+				if(start + length > ch.length) {
+					length = ch.length - start;// Make sure the length is correct
+				}
 				xtw.writeCharacters(ch, start, length);
 			} else {
 				xtw.writeCharacters(ch, start, length);