Summary: | When draging/ droping a template into the main frame it crashes | ||
---|---|---|---|
Product: | [Applications] kate | Reporter: | simsonloverforever |
Component: | part | Assignee: | KWrite Developers <kwrite-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | amantia |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
simsonloverforever
2007-02-19 06:23:20 UTC
I was testing this bug yesterday, and altough it crashes in Katepart, I'm unsure if it is ONLY a katepart issue. Certainly there is no code there involving Quanta and we might just hit a cornercase in kate which was not tested, but until further investigations I didn't want to blame them. ;-) > To reproduce:
> In side bar open "templates", in side frame open "pages"( under global
> templates), then "special", then drag "drag n drop menu" into the main frame.
> try twice might not happen the first time you use quanta, start a project and
> than try again.
I did but was not able to reproduce, yet...
I can easily reproduce it... There are a case when it doesn't crash: when the current document has some text inside. At least this is what I noticed. For example, if you have an Untitled1 document with no text, dropping a "document template" crashes it. If the document has some text, it will not crash. The difference in code is that in the first case the KTextEditor::Document is destroyed and created once more, while in the second case only a new one is created. The reason for this hack is in quantadoc.cpp:107: //workaround for some strange Katepart behavior. If there is a highlighting mode //selected and new content is loaded, the highlighting is reset to None. To avoid this //remove the untitled document and create a new one, where we don't set the //highlighting Basicly without this hack, loading of a file into the current view (which has an unmodified KTextEditor::Document) would result in a view where the highlighting is set to NONE... Due to this destruction/recreation it is unclear if this is a katepart bug or not. Theoretically it is, because it crashes when katepart is trying to handle the drop event. But might be just a case when due to some timing issues, the drop is handled in a "wrong moment". Here is a valgrind log about this issue: ==2759== ==2759== Invalid write of size 4 ==2759== at 0x119EB802: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3089) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BDF0: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D2B0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 4 ==2759== at 0xB1B0DF1: QTimer::stop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x119E4A4F: KateViewInternal::stopDragScroll() (kateviewinternal.cpp:3135) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D448 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid write of size 1 ==2759== at 0x119E3D77: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:472) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D3E1 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119E3D7E: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:474) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D1C0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119D7BD0: KateDocument::visibleLines() (katedocument.h:843) ==2759== by 0x119E3D8E: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:474) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x14E52788 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 4 ==2759== at 0x119A7621: KateBuffer::countVisible() (katebuffer.h:568) ==2759== by 0x119E3D8E: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:474) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x13E11BF0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119DF900: QValueList<KateHiddenLineBlock>::isEmpty() const (qvaluelist.h:524) ==2759== by 0x119DBD8A: KateCodeFoldingTree::getHiddenLinesCount(unsigned) (katecodefoldinghelpers.cpp:1492) ==2759== by 0x119A7631: KateBuffer::countVisible() (katebuffer.h:568) ==2759== by 0x119E3D8E: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:474) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x13E11D70 is 0 bytes after a block of size 16 free'd ==2759== at 0x4C21E2C: operator delete[](void*) (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==2759== by 0xB419536: QStringData::deleteSelf() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB386BFF: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119DF903: QValueList<KateHiddenLineBlock>::isEmpty() const (qvaluelist.h:524) ==2759== by 0x119DBD8A: KateCodeFoldingTree::getHiddenLinesCount(unsigned) (katecodefoldinghelpers.cpp:1492) ==2759== by 0x119A7631: KateBuffer::countVisible() (katebuffer.h:568) ==2759== by 0x119E3D8E: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:474) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x13F3A828 is 8 bytes after a block of size 8 free'd ==2759== at 0x4C21E2C: operator delete[](void*) (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==2759== by 0xB41AF55: QString::deref() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB41B4AC: QString::setLength(unsigned) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB37C649: QXmlSimpleReader::name() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB380F76: QXmlSimpleReader::processElementETagBegin2() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385E49: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119E3D8F: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:476) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D2D0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 1 ==2759== at 0xB190CC0: QObject::blockSignals(bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x119E3DA3: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:476) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x14E28E60 is 8 bytes inside a block of size 24 free'd ==2759== at 0x4C221B0: operator delete(void*) (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==2759== by 0x4688A5: QValueListPrivate<QString>::remove(QValueListIterator<QString>) (qvaluelist.h:306) ==2759== by 0xB380FF9: QXmlSimpleReader::processElementETagBegin2() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385E49: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== ==2759== Invalid write of size 1 ==2759== at 0xB190CCF: QObject::blockSignals(bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x119E3DA3: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:476) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x14E28E60 is 8 bytes inside a block of size 24 free'd ==2759== at 0x4C221B0: operator delete(void*) (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==2759== by 0x4688A5: QValueListPrivate<QString>::remove(QValueListIterator<QString>) (qvaluelist.h:306) ==2759== by 0xB380FF9: QXmlSimpleReader::processElementETagBegin2() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385E49: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB38674B: QXmlSimpleReader::parseContent() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB385EB7: QXmlSimpleReader::parseElement() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== ==2759== Invalid write of size 1 ==2759== at 0x119E339A: KateViewInternal::maxStartPos(bool) (kateviewinternal.cpp:364) ==2759== by 0x119E3DC0: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:478) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D3E0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 4 ==2759== at 0x11972A20: KateTextCursor::line() const (katecursor.h:70) ==2759== by 0x119E33AA: KateViewInternal::maxStartPos(bool) (kateviewinternal.cpp:366) ==2759== by 0x119E3DC0: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:478) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D3F0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid write of size 1 ==2759== at 0x119E3443: KateViewInternal::maxStartPos(bool) (kateviewinternal.cpp:373) ==2759== by 0x119E3DC0: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:478) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D3E0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 4 ==2759== at 0x119729FE: KateTextCursor::KateTextCursor(KateTextCursor const&) (katecursor.h:33) ==2759== by 0x119E3454: KateViewInternal::maxStartPos(bool) (kateviewinternal.cpp:375) ==2759== by 0x119E3DC0: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:478) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D3F0 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 4 ==2759== at 0x11972A04: KateTextCursor::KateTextCursor(KateTextCursor const&) (katecursor.h:33) ==2759== by 0x119E3454: KateViewInternal::maxStartPos(bool) (kateviewinternal.cpp:375) ==2759== by 0x119E3DC0: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:478) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D3F4 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119E3DCB: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:480) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x1523D1B8 is not stack'd, malloc'd or (recently) free'd ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119E3DD4: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:480) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x14C6C0B8 is 0 bytes inside a block of size 1,024 free'd ==2759== at 0x4C21E2C: operator delete[](void*) (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==2759== by 0xB419536: QStringData::deleteSelf() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB398A99: QDomDocument::setContent(QIODevice*, bool, QString*, int*, int*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB398B03: QDomDocument::setContent(QIODevice*, QString*, int*, int*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x4B8085: DTDs::readTagFile(QString const&, DTDStruct*, QDict<QTag>*) (dtds.cpp:685) ==2759== by 0x4B8C9F: DTDs::readTagDir2(DTDStruct*) (dtds.cpp:289) ==2759== by 0x469D0B: DTDs::find(QString const&) (dtds.h:79) ==2759== by 0x53EF82: Parser::parseArea(int, int, int, int, Node**, Node*) (parser.cpp:295) ==2759== by 0x53FE82: Parser::parse(Document*, bool) (parser.cpp:540) ==2759== by 0x540CEA: Parser::rebuild(Document*) (parser.cpp:1010) ==2759== ==2759== Invalid read of size 8 ==2759== at 0x119E3DD7: KateViewInternal::updateView(bool, int) (kateviewinternal.cpp:480) ==2759== by 0x119EB813: KateViewInternal::dropEvent(QDropEvent*) (kateviewinternal.cpp:3091) ==2759== by 0xB1C48FE: QWidget::event(QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AEB4: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13BC3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0x9DE0D81: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550) ==2759== by 0xB0ED99F: qt_handle_xdnd_drop(QWidget*, _XEvent const*, bool) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EDB48: QDragManager::drop() (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB0EF950: QDragManager::eventFilter(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== by 0xB13AE79: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/qt3/lib64/libqt-mt.so.3.3.7) ==2759== Address 0x4F0044002106D4 is not stack'd, malloc'd or (recently) free'd KCrash: crashing... crashRecursionCounter = 2 SVN commit 637709 by amantia: Fix crash when dropping a document template on an Untitled empty document by removing the hack to destroy/recreate the document if it is empty and Untitled. >From my POV this case in handled, but if the Kate devels want, they can reopen the report. BUG: 141908 M +1 -0 ChangeLog M +2 -2 quanta.kdevelop M +10 -16 src/quantadoc.cpp --- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #637708:637709 @@ -3,6 +3,7 @@ Version 3.5.7 (Release date: xx-xx-2006; Started 06-02-2006) - bugfixes: - fix directory creation when certain ftp servers are used [#141232] + - fix crash when dropping a document template on an Untitled empty document [#141908] - improvements: - autocompletion for member variables. Patch by Andrew Lowe <andrew.lowe@manildra.com.au>. --- branches/KDE/3.5/kdewebdev/quanta/quanta.kdevelop #637708:637709 @@ -259,10 +259,10 @@ </kdevcvs> <kdevfilecreate> <filetypes> - <type icon="" ext="h" create="template" name="C++ header" > + <type icon="" ext="h" name="C++ header" create="template" > <descr>Quanta speicfic header</descr> </type> - <type icon="source_cpp" ext="cpp" create="template" name="C++ source" > + <type icon="source_cpp" ext="cpp" name="C++ source" create="template" > <descr>A new empty C++ file.</descr> </type> </filetypes> --- branches/KDE/3.5/kdewebdev/quanta/src/quantadoc.cpp #637708:637709 @@ -99,29 +99,23 @@ QuantaView *view = ViewManager::ref()->isOpened(url); if (!view || newfile) { +/* // no modi and new -> we can remove !!!! w = ViewManager::ref()->activeDocument(); if (w && !w->isModified() && w->isUntitled() && !w->busy) { - //workaround for some strange Katepart behavior. If there is a highlighting mode - //selected and new content is loaded, the highlighting is reset to None. To avoid this - //remove the untitled document and create a new one, where we don't set the - //highlighting - ViewManager::ref()->removeActiveView(false); - w = ViewManager::ref()->activeDocument(); + //workaround for some strange Katepart behavior. If there is a highlighting mode + //selected and new content is loaded, the highlighting is reset to None. To avoid this + //remove the untitled document and create a new one, where we don't set the + //highlighting + ViewManager::ref()->removeActiveView(false); + w = ViewManager::ref()->activeDocument(); - /* - KTextEditor::HighlightingInterface* highlightIf = dynamic_cast<KTextEditor::HighlightingInterface*>(w->doc()); - if (highlightIf) - { - highlightIf->setHlMode(0); + if (w && !w->isModified() && w->isUntitled() && !w->busy) + return true; } - */ - if (w && !w->isModified() && w->isUntitled() && !w->busy) - return true; - } - +*/ // now we can create new kwrite ViewManager::ref()->createNewDocument(); view = ViewManager::ref()->activeView(); Thanks for sloving this bug. KDE is a great DE because of people who help close bugs. Thanks András Manţia <amantia@kde.org> wrote: ------- You are receiving this mail because: ------- You reported the bug, or are watching the reporter. http://bugs.kde.org/show_bug.cgi?id=141908 amantia kde org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Additional Comments From amantia kde org 2007-02-27 15:16 ------- SVN commit 637709 by amantia: Fix crash when dropping a document template on an Untitled empty document by removing the hack to destroy/recreate the document if it is empty and Untitled. >From my POV this case in handled, but if the Kate devels want, they can reopen the report. BUG: 141908 M +1 -0 ChangeLog M +2 -2 quanta.kdevelop M +10 -16 src/quantadoc.cpp --- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #637708:637709 @ -3,6 +3,7 @ Version 3.5.7 (Release date: xx-xx-2006; Started 06-02-2006) - bugfixes: - fix directory creation when certain ftp servers are used [#141232] + - fix crash when dropping a document template on an Untitled empty document [#141908] - improvements: - autocompletion for member variables. Patch by Andrew Lowe --- branches/KDE/3.5/kdewebdev/quanta/quanta.kdevelop #637708:637709 @ -259,10 +259,10 @ - + Quanta speicfic header - + A new empty C++ file. --- branches/KDE/3.5/kdewebdev/quanta/src/quantadoc.cpp #637708:637709 @ -99,29 +99,23 @ QuantaView *view = ViewManager::ref()->isOpened(url); if (!view || newfile) { +/* // no modi and new -> we can remove !!!! w = ViewManager::ref()->activeDocument(); if (w && !w->isModified() && w->isUntitled() && !w->busy) { - //workaround for some strange Katepart behavior. If there is a highlighting mode - //selected and new content is loaded, the highlighting is reset to None. To avoid this - //remove the untitled document and create a new one, where we don't set the - //highlighting - ViewManager::ref()->removeActiveView(false); - w = ViewManager::ref()->activeDocument(); + //workaround for some strange Katepart behavior. If there is a highlighting mode + //selected and new content is loaded, the highlighting is reset to None. To avoid this + //remove the untitled document and create a new one, where we don't set the + //highlighting + ViewManager::ref()->removeActiveView(false); + w = ViewManager::ref()->activeDocument(); - /* - KTextEditor::HighlightingInterface* highlightIf = dynamic_cast(w->doc()); - if (highlightIf) - { - highlightIf->setHlMode(0); + if (w && !w->isModified() && w->isUntitled() && !w->busy) + return true; } - */ - if (w && !w->isModified() && w->isUntitled() && !w->busy) - return true; - } - +*/ // now we can create new kwrite ViewManager::ref()->createNewDocument(); view = ViewManager::ref()->activeView(); --------------------------------- Never Miss an Email Stay connected with Yahoo! Mail on your mobile. Get started!Thanks for sloving this bug. KDE is a great DE because of people who help close bugs. Thanks<br><br><b><i>András Manţia <amantia@kde.org></i></b> wrote:<blockquote class="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> ------- You are receiving this mail because: -------<br>You reported the bug, or are watching the reporter.<br> <br>http://bugs.kde.org/show_bug.cgi?id=141908 <br>amantia kde org changed:<br><br> What |Removed |Added<br>----------------------------------------------------------------------------<br> Status|NEW |RESOLVED<br> Resolution| |FIXED<br><br><br><br>------- Additional Comments From amantia kde org 2007-02-27 15:16 -------<br>SVN commit 637709 by amantia:<br><br>Fix crash when dropping a document template on an Untitled empty document by removing the hack to destroy/recreate the document if it is empty and Untitled.<br>>From my POV this case in handled, but if the Kate devels want, they can reopen the report.<br><br><br>BUG: 141908<br><br> M +1 -0 ChangeLog <br> M +2 -2 quanta.kdevelop <br> M +10 -16 src/quantadoc.cpp <br><br><br>--- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #637708:637709<br> @ -3,6 +3,7 @<br> Version 3.5.7 (Release date: xx-xx-2006; Started 06-02-2006)<br> - bugfixes:<br> - fix directory creation when certain ftp servers are used [#141232]<br>+ - fix crash when dropping a document template on an Untitled empty document [#141908]<br> - improvements:<br> - autocompletion for member variables. Patch by Andrew Lowe<br> <andrew.lowe manildra="" com="" au=""> <br>--- branches/KDE/3.5/kdewebdev/quanta/quanta.kdevelop #637708:637709<br> @ -259,10 +259,10 @<br> </andrew.lowe><br> <kdevfilecreate><br> <filetypes><br>- <type icon="" ext="h" create="template" name="C++ header"><br>+ <type icon="" ext="h" name="C++ header" create="template"><br> <descr>Quanta speicfic header</descr><br> </type><br>- <type icon="source_cpp" ext="cpp" create="template" name="C++ source"><br>+ <type icon="source_cpp" ext="cpp" name="C++ source" create="template"><br> <descr>A new empty C++ file.</descr><br> </type><br> </type><br>--- branches/KDE/3.5/kdewebdev/quanta/src/quantadoc.cpp #637708:637709<br> @ -99,29 +99,23 @<br> QuantaView *view = ViewManager::ref()->isOpened(url);<br> if (!view || newfile)<br> {<br>+/* <br> // no modi and new -> we can remove !!!!<br> w = ViewManager::ref()->activeDocument();<br> if (w && !w->isModified() &&<br> w->isUntitled() && !w->busy)<br> {<br>- //workaround for some strange Katepart behavior. If there is a highlighting mode<br>- //selected and new content is loaded, the highlighting is reset to None. To avoid this<br>- //remove the untitled document and create a new one, where we don't set the<br>- //highlighting<br>- ViewManager::ref()->removeActiveView(false);<br>- w = ViewManager::ref()->activeDocument();<br>+ //workaround for some strange Katepart behavior. If there is a highlighting mode<br>+ //selected and new content is loaded, the highlighting is reset to None. To avoid this<br>+ //remove the untitled document and create a new one, where we don't set the<br>+ //highlighting<br>+ ViewManager::ref()->removeActiveView(false);<br>+ w = ViewManager::ref()->activeDocument();<br> <br>- /*<br>- KTextEditor::HighlightingInterface* highlightIf = dynamic_cast<KTextEditor::HighlightingInterface*>(w->doc());<br>- if (highlightIf)<br>- {<br>- highlightIf->setHlMode(0);<br>+ if (w && !w->isModified() && w->isUntitled() && !w->busy)<br>+ return true;<br> }<br>- */<br>- if (w && !w->isModified() && w->isUntitled() && !w->busy)<br>- return true;<br>- }<br>-<br>+*/<br> // now we can create new kwrite<br> ViewManager::ref()->createNewDocument();<br> view = ViewManager::ref()->activeView();<br></KTextEditor::HighlightingInterface*></type></filetypes></kdevfilecreate></blockquote><br><p>  <hr size=1>Never Miss an Email<br>Stay connected with Yahoo! Mail on your mobile. <a href="http://us.rd.yahoo.com/evt=43909/*http://mobile.yahoo.com/services?promote=mail">Get started!</a> |