• Tobias Deiminger's avatar
    Fix crash due to dangling pointer in MouseAnnotation · 3c4f16ea
    Tobias Deiminger authored
    Summary:
    BUG: 388228
    
    Diff applies to Applications/17.12, and should be easy to merge to master. It's kept quite minimal as suggested by Albert.
    
    Albert also suggested to add a dedicated unit test and I'd agree, but am not yet sure how to do it. The original bug involves several classes, including UI: Document, Page, AddAnnotationCommand, PageView, PageViewAnnotator, MouseAnnotation - to name a few. So a test for the exact bug scenario would become a bigger integration test rather than an isolated unit test. The other approach would be to do a real unit test on MouseAnnotation. But again, MouseAnnotation has nasty dependencies (e.g., needs a parent PageView) which I'd have to mock. Any ideas? I'd be interested in a discussion on this topic.
    
    Test Plan:
     # Load a document (e.g. [[ http://www.philipebert.info/resources/WhatMathematicalKnowledgeCouldNotBe.pdf | linked PDF from bug report ]]) and enable highlight toolbar (F6).
     # Create highlight annotation.
     # Move the view port so that the annotation position is right beside the highlight tool icon.
     # Move the mouse over the annotation, and then horizontally left until you reach the tool icon; it's important to stay over the highlight annotation as long as in viewport.
     # Press ctrl-z for undo.
     # Click on highlight tool, move right into the document, create new highlight annotation.
     # Okular doesn't crash.
    
    Reviewers: #okular
    
    Subscribers: aacid, ngraham
    
    Tags: #okular
    
    Differential Revision: https://phabricator.kde.org/D9852
    3c4f16ea
pageviewmouseannotation.cpp 27.6 KB