[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kate] part/undo: fix crash due to index-out-of bounds in bit-array
From: Dominik Haumann <dhdev () gmx ! de>
Date: 2011-09-04 18:16:16
Message-ID: 20110904181616.6A4A9A607A () git ! kde ! org
[Download RAW message or body]
Git commit b91db4deebb2a1aa2a59845fd94e71a3fe3e5ce1 by Dominik Haumann.
Committed on 04/09/2011 at 20:13.
Pushed by dhaumann into branch 'master'.
fix crash due to index-out-of bounds in bit-array
M +32 -0 part/undo/kateundo.cpp
http://commits.kde.org/kate/b91db4deebb2a1aa2a59845fd94e71a3fe3e5ce1
diff --git a/part/undo/kateundo.cpp b/part/undo/kateundo.cpp
index 4813049..22a5370 100644
--- a/part/undo/kateundo.cpp
+++ b/part/undo/kateundo.cpp
@@ -381,6 +381,10 @@ void KateEditMarkLineAutoWrappedUndo::redo ()
void KateEditInsertTextUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line >= lines.size()) {
+ lines.resize(m_line + 1);
+ }
+
if (!lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -391,6 +395,10 @@ void KateEditInsertTextUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
void KateEditInsertTextUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line >= lines.size()) {
+ lines.resize(m_line + 1);
+ }
+
if (!lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -401,6 +409,10 @@ void KateEditInsertTextUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
void KateEditRemoveTextUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line >= lines.size()) {
+ lines.resize(m_line + 1);
+ }
+
if (!lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -411,6 +423,10 @@ void KateEditRemoveTextUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
void KateEditRemoveTextUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line >= lines.size()) {
+ lines.resize(m_line + 1);
+ }
+
if (!lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -421,6 +437,10 @@ void KateEditRemoveTextUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
void KateEditWrapLineUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line + 1 >= lines.size()) {
+ lines.resize(m_line + 2);
+ }
+
if (isFlagSet(RedoLine1Modified) && !lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -438,6 +458,10 @@ void KateEditWrapLineUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
void KateEditWrapLineUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line >= lines.size()) {
+ lines.resize(m_line + 1);
+ }
+
if (isFlagSet(UndoLine1Modified) && !lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -448,6 +472,10 @@ void KateEditWrapLineUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
void KateEditUnWrapLineUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line >= lines.size()) {
+ lines.resize(m_line + 1);
+ }
+
if (isFlagSet(RedoLine1Modified) && !lines.testBit(m_line)) {
lines.setBit(m_line);
@@ -458,6 +486,10 @@ void KateEditUnWrapLineUndo::updateRedoSavedOnDiskFlag(QBitArray & lines)
void KateEditUnWrapLineUndo::updateUndoSavedOnDiskFlag(QBitArray & lines)
{
+ if (m_line + 1 >= lines.size()) {
+ lines.resize(m_line + 2);
+ }
+
if (isFlagSet(UndoLine1Modified) && !lines.testBit(m_line)) {
lines.setBit(m_line);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic