Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates from koreader/crengine #299

Merged
merged 88 commits into from
Jun 12, 2021
Merged

Updates from koreader/crengine #299

merged 88 commits into from
Jun 12, 2021

Commits on May 27, 2021

  1. XML parsing: correctly parse CDATA (#397)

    "<div>abc <![CDATA[d<e&>f]]> ghi</div>" will now add into
    the DOM 3 text nodes: "abc " , "d<e&>f" and " ghi", as it's
    supposed to happen in XML/XHTML.
    (In HTML, browsers would not do any specific parsing, with
    possibly strange results. We do it too in plain HTML.)
    poire-z authored and virxkane committed May 27, 2021
    Configuration menu
    Copy the full SHA
    ea9e649 View commit details
    Browse the repository at this point in the history
  2. Based on koreader/crengine#399: 3a28fe9 'LVDrawBuf: Various C++11 twe…

    …aks & cleanups' by NiLuJe
    
    * Mark getter functions as const
    * Simplify LVGrayDrawBuf::Invert
    * LVColorDrawBuf::Clear @ 32bpp: Cache the color value
    Helps avoid noise on debug builds. (Because I sure hope an optimized build would have hoisted that).
    virxkane committed May 27, 2021
    Configuration menu
    Copy the full SHA
    b0201d4 View commit details
    Browse the repository at this point in the history
  3. Based on koreader/crengine#399: b65f1e3 'LVImg: Various C++11 tweaks …

    …& cleanups' by NiLuJe
    
    * Mark getter functions as const
    * We don't need stbiw outside of lvimg
    (Probably requires a recent stbiw, the one shipped w/ NanoSVG is
    hilariously old. Harmless if unsupported, though).
    virxkane committed May 27, 2021
    Configuration menu
    Copy the full SHA
    9dc6fd9 View commit details
    Browse the repository at this point in the history
  4. LVTinyDom: Update xxHash to v0.8.0

    And make it private & inlined, as only lvtinydom uses it.
    NiLuJe authored and virxkane committed May 27, 2021
    Configuration menu
    Copy the full SHA
    78b2561 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    eb3644d View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    a3c5843 View commit details
    Browse the repository at this point in the history
  7. LVTinyDom: Port ldomPack/ldomUnpack to ZSTD

    * Move ldomPack/ldomUnpack to the CacheFile class, as that the only
      class that uses it.
    * Which implies duplicating (zlib) unpack in PDBFile for pdbfmt...
    * Lazy init ZSTD ressources, and keep 'em around as long as sensible.
    NiLuJe authored and virxkane committed May 27, 2021
    Configuration menu
    Copy the full SHA
    a342f43 View commit details
    Browse the repository at this point in the history
  8. * crengine: enabled zstd cache compression.

    * crengine: allow to set global cache compression type (none, zlib, zstd).
    * crengine: allow use zlib cache compression even if zstd available
      (selected by setCacheCompressionType() global functions).
      In the future, can be implemented selection in the settings dialog.
    virxkane committed May 27, 2021
    Configuration menu
    Copy the full SHA
    1cfe4b3 View commit details
    Browse the repository at this point in the history

Commits on May 28, 2021

  1. * add thirdparty zstd to repo.

    * Android: add static library zstd to dependencies.
    virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    7f61948 View commit details
    Browse the repository at this point in the history
  2. Android cmake project: rename all thirdparty bundled static libraries…

    … to exclude any conflicts in the future.
    virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    617cf84 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    64fc974 View commit details
    Browse the repository at this point in the history
  4. Get rid of RevRGB & co (#402)

    It turns out it's not just LVImg that wants inverted alpha: it's *all* CRe...
    So, we'll be handling the pixel format conversion entirely in KOReader instead, as dealing with the alpha here is kind of hairy without basically rewiring all the things.
    
    :(
    NiLuJe authored and virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    fe7a080 View commit details
    Browse the repository at this point in the history
  5. Android: optimized pixel format conversion from crengine BGRX to andr…

    …oid RGBA.
    
    Conversion time was reduced by about 50%:
    Nokia 8: 18 ms => 9 ms
    x86 emu: 1.6 ms => 0.6 ms
    virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    dcc77dd View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    0da210c View commit details
    Browse the repository at this point in the history
  7. XML parsing: slightly better parsing of <script>

    Handle content as text, but don't stop just at any '<',
    only at '</script>', as <script> may contain tags.
    Not doing that might put a lot of javascript as
    document text content. Note that <script> content
    is "display: none" by default.
    poire-z authored and virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    db7f67e View commit details
    Browse the repository at this point in the history
  8. Update German hyphenation patterns (#406)

    Upstream update of the German patterns (roughly 800 changes)
    zwim authored and virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    5f8c16a View commit details
    Browse the repository at this point in the history
  9. Update German hyphenation patterns in android resources

    (from cr3gui/data/hyph/german_hyphen.pattern).
    virxkane committed May 28, 2021
    Configuration menu
    Copy the full SHA
    9f0ce43 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2021

  1. Configuration menu
    Copy the full SHA
    72b99fa View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5bc60e1 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1f1aaff View commit details
    Browse the repository at this point in the history
  4. resizeImage(): restore original scaling options code

    It was hardcoded'ly removed as part of 9214bfc when
    implementing support for CSS width & height for images,
    so they don't get in the way.
    Removed the hardcoding so the original CoolReader
    settings can work again.
    We can still disable that from frontend code.
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    14379db View commit details
    Browse the repository at this point in the history
  5. CSS: parse and store min/max-width/height

    Increase nb of bitmaps from 2 to 3 lUInt32 as we're
    going over 64 properties.
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    d8f6d09 View commit details
    Browse the repository at this point in the history
  6. Add getStyledImageSize() ensuring min/max-width/height

    Compute image size according to CSS2 specs, ensuring
    CSS width, height, min-width, min-height, max-width
    and max-height.
    Used in lvtextfm when drawing images, and when
    estimating block widths in getRenderedWidths()
    instead of the previous wrong computation.
    Limitation: heights in % are not supported and ignored.
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    15608a5 View commit details
    Browse the repository at this point in the history
  7. renderBlockElementEnhanced(): ensure min/max-width/height

    Ensure min-width, min-height, max-width (but not max-height)
    on block elements, inline-block/table, block floats and
    floating images (min-height in % not supported).
    Ensure min-width on the table element itself (but not
    supported on the table inner elements like cells and cols).
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    fdddc7d View commit details
    Browse the repository at this point in the history
  8. Add LVDocView::getDocumentRenderingHash()

    So frontends can know if the rendering or the number
    of pages have changed (instead of relying of the
    document height, which is not a strictly accurate
    indicator of changes).
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    52eb1ad View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    26be90f View commit details
    Browse the repository at this point in the history
  10. CSS: add units vw vh vmin vmax

    ourairquality authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    731857f View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    38f688a View commit details
    Browse the repository at this point in the history
  12. getStyledImageSize(): tweak min/max-width/height computations

    Ensure "the rules above are applied again" from the specs
    when ensuring max/min-height, meaning some bits of the width
    computations have to be ensured again.
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    832f114 View commit details
    Browse the repository at this point in the history
  13. getStyledImageSize(): don't ignore FB2/SVG <image> element

    Also handle <image> just as <img> in the few places we
    did not yet: when handling floats.
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    cf15ffd View commit details
    Browse the repository at this point in the history
  14. getStyledImageSize(): hack to handle sizing via SVG wrappers

    Quite often seen in EPUBs (may be generated by some
    Calibre plugin) to force an image to scale to the
    page (100%) while keeping aspect ratio.
    (Positionning is not ensured: horizontal centering may
    be via the publisher CSS, but vertical centering can't
    and is not ensured.)
    poire-z authored and virxkane committed May 31, 2021
    Configuration menu
    Copy the full SHA
    31c3918 View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2021

  1. Fix max img height when small line-height

    An image having its bottom on the baseline, don't
    account for the strut added space below when this
    space would be negative (ie. with line-height: 0,
    which might be explicitely used to kill that strut
    added bottom blank space).
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    fd6fd3b View commit details
    Browse the repository at this point in the history
  2. getRenderedWidths(): fix consecutive non-collapsable spaces

    Measured widths could be wrong when other unicode space
    chars are used, which should not collapse.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    e1504f3 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fc77590 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    b844dbb View commit details
    Browse the repository at this point in the history
  5. remove global gRootFontSize

    Since 25d1ce2, lengthToPx() can access the document
    and get the root font size. But we need to pass it
    to lvpagesplitter though.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    fc12d9c View commit details
    Browse the repository at this point in the history
  6. LVString: Fix a c/p issue in lString8::atoi64

    Sidebar: this is what templates are for.
    
    Code probably not exercised much of anywhere, definitely not in
    KOReader.
    
    Fix #412
    zwim authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    3790cef View commit details
    Browse the repository at this point in the history
  7. LVTextFm: Simplify and fix resizeImage logic

    As discussed in #409
    
    Basically:
    
    * If !arbitraryImageScaling: try integer scaling, from maxScaleMult to
      1. If nothing fits the bounding box, fall back to arbitrary scaling.
      Get rid of the weird mutlitplier and magic scratch pixels, because
      when they weren't introducins egregious errors, they were actually
      *introducing* rounding errors!
    * Simplify the classic scaling code, based on Qt's algorithm.
    
    No floats or weird multiplier needed, because we *always* MUL before we
    DIV.
    And if no rounding was deemed necessary by Qt, then implicit truncation
    is probably good enough for us, too ;).
    NiLuJe authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    2b38949 View commit details
    Browse the repository at this point in the history
  8. LVXMLParser::ReadText(): fix parsing at buffer boundaries

    Avoid '</sc' at buffer end to miss matching '</script>' if
    it would come next when reading from file stream.
    A bit of clean up of this part of the code, added comments
    as I understand what bits are supposed to do.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    6464e87 View commit details
    Browse the repository at this point in the history
  9. TextLang: fix lang_tag first part comparison

    "en" and "en-US" do start with "en", but "eno" should not.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    bf038f2 View commit details
    Browse the repository at this point in the history
  10. CSS font-family: fix parsing of 'inherit' and '!important'

    Proper parsing of "!important" at end of font-family.
    Also try to handle "inherit" in the most compatible way,
    even if not per current specs:
    "inherit" is nowadays invalid when not standalone.
    We have seen books with 'font-family: "Some Font", inherit',
    that Calibre 3.x would render with "Some Font", while Firefox
    and Calibre 5.x would consider the whole declaration invalid.
    So, best to just ignore any non-standalone "inherit", and
    keep parsing the font names.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    d32591b View commit details
    Browse the repository at this point in the history
  11. CSS: support a few -epub-* and -webkit-* properties

    Mentionned in early specs of EPUB3 (and later deprecated), or
    only supported as -webkit- at some point in the past, so these
    can be found in some books without the newer alternatives.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    c4bd5b2 View commit details
    Browse the repository at this point in the history
  12. Text fragment flags: add LTEXT_HAS_EXTRA

    Replace LTEXT_HIDDEN and have "visibility: hidden" use it.
    This might allow adding support for rare CSS text
    properties (like "visibility", "line-break) without
    wasting a bit in the LTEXT_ flags.
    Have any generated content (list item markes, pseudo
    elements, BiDi markers) pass their originated node
    to AddSourceLine() so we always have access to the
    node to fetch these extra properties.
    poire-z authored and virxkane committed Jun 1, 2021
    Configuration menu
    Copy the full SHA
    dc70164 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    af78726 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    88ffbc6 View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2021

  1. Based on koreader/crengine#426: 4acb2ea34c6e01cd099862c0bf80e24dd7a1a…

    …171 'LVImg: Simplify JPG & PNG decoding' by NiLuJe
    
    * Avoid unnecessary per-scanline allocs in PNG
    virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    1d8551c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    fc18c9d View commit details
    Browse the repository at this point in the history
  3. LVString: fix ::insert(pos, count, char)

    It was working somehow as we mostly use them with count=1,
    but it was wrong when count >=2.
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    bc62a23 View commit details
    Browse the repository at this point in the history
  4. toStringV2(): fix (again) when target node is a boxing node

    Follow up to 5330750: when getting a non-boxing parent
    or child, be sure we actually get one (as we can have
    nested boxing elements, like tabularBoxes with completed
    incomplete tables).
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    3243799 View commit details
    Browse the repository at this point in the history
  5. LVFontCache::find(): give more weight to first fonts in list

    When there are multiple font names in a list (ie, with
    CSS 'font-family: "Font1", "Font2"', multiple fonts may
    get the same higher score. We keep the first best match
    in the loop, but at the end, we prefer an instantiated
    font to a not yet instantiated one with the same match.
    Depending on various things, it may not be the first one.
    So, provide an additional weight to font by their order
    in the list.
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    c58fad4 View commit details
    Browse the repository at this point in the history
  6. Page splitting: more accurate rendering progress

    Fix accounting of erm_final rendering by not ignoring those
    done in sub-flows/contexts (floats, inline-blocks, tables).
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    16c6623 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    9e801c7 View commit details
    Browse the repository at this point in the history
  8. Table cells getRenderedWidths(): provide rend_flags

    To be consistent, as it will be drawn with these rend_flags.
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    4d2ece7 View commit details
    Browse the repository at this point in the history
  9. Tables rendering: tweak column widths algorithm

    Use the cells max content width as the column widths
    when all these max widths fit (instead of using some
    heuristics about the sum of the means, which could
    lead to uneeded smaller widths and wraps).
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    798cf82 View commit details
    Browse the repository at this point in the history
  10. CSS: parse/handle "currentcolor", default for border-color

    Allow parsing color value "currentcolor".
    Can be used with "color:" and "background-color:" even if
    useless, but it is the initial value for border-color,
    and the default when no color value is found in "border:"
    (ie. "border: solid thin").
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    6fd22ac View commit details
    Browse the repository at this point in the history
  11. CSS: add units 'ch' (just like 'ex')

    Represents the width, or more precisely the advance measure,
    of the glyph "0" (zero) in the element's font.
    In the cases where it is impractical to determine, it must
    be assumed to be 0.5em wide by 1em tall.
    So, let's handle it just as 'ex', assuming 0.5em.
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    0abeb69 View commit details
    Browse the repository at this point in the history
  12. SVG images: proper alpha blending

    Allow transparent SVG images to blend, instead
    of drawing them on a white background.
    poire-z authored and virxkane committed Jun 2, 2021
    Configuration menu
    Copy the full SHA
    426b303 View commit details
    Browse the repository at this point in the history

Commits on Jun 8, 2021

  1. Use the correct font glyph cache item size & glyph image offset.

    Based on koreader/crengine#441: 604132a303a3118a8a95322a7e344fc1b7bd4580 'LVFntMan: Ensure proper alignment of the glyph bitmap buffer in LVFon…' by NiLuJe
    virxkane committed Jun 8, 2021
    Configuration menu
    Copy the full SHA
    67f0e3a View commit details
    Browse the repository at this point in the history

Commits on Jun 9, 2021

  1. Images: allow <img src="data:image/svg;-cr-plain,content">

    In 'img src="..."' and 'background-image: url(...)', where
    we support "data:image/svg;base64,...", also support
    a non-standard "data:image/svg;-cr-plain,...".
    May be used to build SVG images at rendering time, and
    have the code set them as attribute or styles (will be
    useful to generate the MathML <msqrt> radical symbol).
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    81dd8c1 View commit details
    Browse the repository at this point in the history
  2. CSS: properly handle selectors with internal boxing element names

    When checking selectors, we normally skip/enter/exit
    internal boxing elements when waking parents or siblings.
    This allows having selectors specifying one type of
    internal boxing elements - and so not skip them.
    Adds in advance a new internal elements: <mathBox>,
    which will be used for MathML support (which will
    use CSS selectors to do some part of its work).
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    50f4064 View commit details
    Browse the repository at this point in the history
  3. CSS ensure width on boxing element table sub-elements

    As only us (and not publishers) can set widths on them,
    ensure them even if we normally don't on table sub-elements.
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    a87643d View commit details
    Browse the repository at this point in the history
  4. Add ldomNode::getAttributeValueLC()

    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    5e66132 View commit details
    Browse the repository at this point in the history
  5. MathML: adds LVInkMeasurementDrawBuf

    Allows measuring the area taken by ink (glyphs, borders,
    images...) by just using the regular drawing code.
    (Easier than doing it using font and glyphs metrics...)
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    229b5b8 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    f1d716d View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    5f3db13 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    6bce2e3 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    ba1ada2 View commit details
    Browse the repository at this point in the history
  10. MathML: plug MathML code into crengine core

    Everything wrapped in #if MATHML_SUPPORT==1 / #endif,
    mostly for documentation purpose, to make it explicite
    a reader can skip it when not interested.
    
    lvtinydom.cpp DOM writers: add flag when entering <math>,
    so that MathMLHelper can complete and tweak the DOM as it
    is being built.
    
    lvrend.cpp: as most of the non trivial MathML elements
    (mfrac, msub, mover, msqrt...) are handled as inline-table,
    plug a few specific handler in the table rendering code,
    and in getRenderedWidths() to estimate inline-block/table
    elements min/max widths.
    Also have setNodeStyle() call setMathMLElementNodeStyle()
    on MathML elements to complete their styling.
    
    lvtextfm.cpp: alignLine() position inline-block boxes
    may call a specific method on MathML elements to tweak
    their position and size to ensure vertical stretching
    of MathML operators, so they adjust to the line box
    vertical space, adjusting the line height and baseline.
    
    lvrend.cpp renderFinalBlock() and lvtextfm.cpp: pass
    LTEXT_MATH_TRANSFORM flag to have stretchy final
    blocks drawn stretched.
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    a12eb32 View commit details
    Browse the repository at this point in the history
  11. MathML: Fonts: allow drawing stretched glyphs

    Simple (and ugly) way to draw MathML stretchy operators,
    for fences, arrows, ... to adjust to their neighbours.
    A more correct rendering would require more changes
    here and in lvtextfm.cpp, to use OT Math fonts glyph
    variants and glyph construction features.
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    adffc27 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    984d743 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    b61f163 View commit details
    Browse the repository at this point in the history
  14. Fix global-buffer-overflow.

    ==536==ERROR: AddressSanitizer: global-buffer-overflow on address 0x555559aa5784 at pc 0x5555576f898a bp 0x7fffffffadb0 sp 0x7fffffffada0
    READ of size 4 at 0x555559aa5784 thread T0
        00 0x5555576f8989 in LVFreeTypeFace::measureText(char32_t const*, int, unsigned short*, unsigned char*, int, char32_t, TextLangCfg*, int, bool, unsigned int, unsigned int) coolreader/crengine/src/lvfont/lvfreetypeface.cpp:1756
        01 0x5555570c6ab4 in ldomDocument::createXPointer(lvPoint, int, bool, ldomNode*) coolreader/crengine/src/lvtinydom.cpp:9059
        02 0x5555570c5fbe in ldomDocument::createXPointer(lvPoint, int, bool, ldomNode*) coolreader/crengine/src/lvtinydom.cpp:9014
        03 0x5555572fd8e3 in LVDocView::getNodeByPoint(lvPoint, bool) coolreader/crengine/src/lvdocview.cpp:2623
        04 0x555556e154cb in CR3View::mouseMoveEvent(QMouseEvent*) coolreader/cr3qt/src/cr3widget.cpp:999
        05 0x7ffff6c17947 in QWidget::event(QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x1ad947)
        06 0x7ffff6bd092e in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x16692e)
        07 0x7ffff6bd84cc in QApplication::notify(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x16e4cc)
        08 0x7ffff611c657 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib64/libQt5Core.so.5+0x2b1657)
        09 0x7ffff6bd7660 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (/usr/lib64/libQt5Widgets.so.5+0x16d660)
        10 0x7ffff6c33a3a  (/usr/lib64/libQt5Widgets.so.5+0x1c9a3a)
        11 0x7ffff6c36d66  (/usr/lib64/libQt5Widgets.so.5+0x1ccd66)
        12 0x7ffff6bd092e in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x16692e)
        13 0x7ffff6bd81f7 in QApplication::notify(QObject*, QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x16e1f7)
        14 0x7ffff611c657 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib64/libQt5Core.so.5+0x2b1657)
        15 0x7ffff6533ce7 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (/usr/lib64/libQt5Gui.so.5+0x125ce7)
        16 0x7ffff65352d4 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (/usr/lib64/libQt5Gui.so.5+0x1272d4)
        17 0x7ffff650e56a in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib64/libQt5Gui.so.5+0x10056a)
        18 0x7fffee994d99  (/usr/lib64/libQt5XcbQpa.so.5+0x77d99)
        19 0x7ffff4eb8d66 in g_main_context_dispatch (/usr/lib64/libglib-2.0.so.0+0x58d66)
        20 0x7ffff4eb8fff  (/usr/lib64/libglib-2.0.so.0+0x58fff)
        21 0x7ffff4eb908e in g_main_context_iteration (/usr/lib64/libglib-2.0.so.0+0x5908e)
        22 0x7ffff617766c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib64/libQt5Core.so.5+0x30c66c)
        23 0x7ffff611b212 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib64/libQt5Core.so.5+0x2b0212)
        24 0x7ffff61234cf in QCoreApplication::exec() (/usr/lib64/libQt5Core.so.5+0x2b84cf)
        25 0x555556dc571f in main coolreader/cr3qt/src/main.cpp:212
        26 0x7ffff503fe39 in __libc_start_main (/lib64/libc.so.6+0x23e39)
        27 0x555556d937d9 in _start (coolreader-debug-build/cr3qt/cr3+0x183f7d9)
    
    0x555559aa5784 is located 0 bytes to the right of global variable 'empty_str_32' defined in 'coolreader/crengine/src/lvstring.cpp:59:16' (0x555559aa5780) of size 4
    0x555559aa5784 is located 60 bytes to the left of global variable 'empty_chunk_32' defined in 'coolreader/crengine/src/lvstring.cpp:60:26' (0x555559aa57c0) of size 24
    SUMMARY: AddressSanitizer: global-buffer-overflow coolreader/crengine/src/lvfont/lvfreetypeface.cpp:1756 in LVFreeTypeFace::measureText(char32_t const*, int, unsigned short*, unsigned char*, int, char32_t, TextLangCfg*, int, bool, unsigned int, unsigned int)
    Shadow bytes around the buggy address:
      0x0aab2b34caa0: 00 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9
      0x0aab2b34cab0: 01 f9 f9 f9 f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9
      0x0aab2b34cac0: 00 00 00 00 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 00
      0x0aab2b34cad0: 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
      0x0aab2b34cae0: 02 f9 f9 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    =>0x0aab2b34caf0:[04]f9 f9 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
      0x0aab2b34cb00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0aab2b34cb10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0aab2b34cb20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0aab2b34cb30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0aab2b34cb40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    436968d View commit details
    Browse the repository at this point in the history
  15. Fixed coolreader/crengine/src/lvstring.cpp:127:42: runtime error: sig…

    …ned integer overflow: 1775760480 * 31 cannot be represented in type 'int'
    virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    69676c8 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    58381dc View commit details
    Browse the repository at this point in the history
  17. Text: dont adjust space after consecutive initial marks/dashes

    Extend 2504a40 to keep doing it when multiple such
    initial quotation marks/dashes separated by spaces.
    poire-z authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    ec95484 View commit details
    Browse the repository at this point in the history
  18. Update German hyphenation patterns (#431)

    New patterns based on dehyph-exptl 0.7.
    zwim authored and virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    38d3aec View commit details
    Browse the repository at this point in the history
  19. Update German hyphenation patterns in android resources.

    from cr3gui/data/hyph/german_hyphen.pattern
    from 38d3aec
    virxkane committed Jun 9, 2021
    Configuration menu
    Copy the full SHA
    f7d4740 View commit details
    Browse the repository at this point in the history

Commits on Jun 10, 2021

  1. MathML: a few minor fixes

    Fix a TeX font name, and avoid some clang warning.
    (And fix 2 other compiler warnings.)
    DrawStretchedGlyph(): fix synthesized bold italic drawing
    similarly to c24628d with regular glyph drawing.
    poire-z authored and virxkane committed Jun 10, 2021
    Configuration menu
    Copy the full SHA
    3ad3314 View commit details
    Browse the repository at this point in the history
  2. Fix hyphenation on Armenian and Georgian text (#436)

    getCharProp() is nearly no longer used when using libunibreak,
    but it is still used by lStr_findWordBounds() to detect words
    to try to hyphenate.
    It knowing only about latin, greek and cyrillic letters made
    hyphenation not detect any candidate word in Armenian and
    Georgian text.
    So, fallback to use utf8proc to detect letters in any other
    alphabet so hyphenation (including soft-hyphens) can work.
    Also detect RTL chars, as we don't want to hyphenate on
    soft-hyphens in Arabic or Hebrew, as the text rendering code
    currently can't draw hyphens on the left.
    poire-z authored and virxkane committed Jun 10, 2021
    Configuration menu
    Copy the full SHA
    2f7e1aa View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3d3702b View commit details
    Browse the repository at this point in the history
  4. * add thirdparty utf8proc to repo.

    * Android: add static library utf8proc to dependencies.
    virxkane committed Jun 10, 2021
    Configuration menu
    Copy the full SHA
    9a78fdf View commit details
    Browse the repository at this point in the history
  5. fb2.css: ensure page break after <body>

    In case footnotes' <body> don't come with a proper <title>
    that would have ensured this page break.
    poire-z authored and virxkane committed Jun 10, 2021
    Configuration menu
    Copy the full SHA
    0ec1371 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    6b0ea70 View commit details
    Browse the repository at this point in the history
  7. Fix ignore occasional space at start of line

    Rework 89b0650: ignore the space even if followed by
    another text node; just don't ignore it for the first
    line where it could have some purpose (eg. to add some
    indentation).
    poire-z authored and virxkane committed Jun 10, 2021
    Configuration menu
    Copy the full SHA
    2b80704 View commit details
    Browse the repository at this point in the history

Commits on Jun 11, 2021

  1. Configuration menu
    Copy the full SHA
    2ad425d View commit details
    Browse the repository at this point in the history
  2. Memory leak fixed:

    Direct leak of 64 byte(s) in 4 object(s) allocated from:
        00 0x7fe9ec7f4087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        01 0x55b88bf8ac27 in OpcPart::readRelations() coolreader/crengine/src/lvopc.cpp:73
        02 0x55b88bf89a55 in OpcPart::getRelatedPartName(char32_t const*, lString32) coolreader/crengine/src/lvopc.cpp:33
        03 0x55b88bc814b3 in fb3ImportContext::openBook() coolreader/crengine/src/fb3fmt.cpp:142
        04 0x55b88bc7f3b0 in ImportFb3Document(LVFastRef<LVStream>, ldomDocument*, LVDocViewCallback*, CacheLoadingCallback*) coolreader/crengine/src/fb3fmt.cpp:100
        05 0x55b88b98f789 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4445
        06 0x55b88b97ec85 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        07 0x55b88b452554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        08 0x55b88b427628 in RecentBooksDlg::openBook(int) coolreader/cr3qt/src/recentdlg.cpp:131
        09 0x55b88b4262c0 in RecentBooksDlg::on_buttonBox_accepted() coolreader/cr3qt/src/recentdlg.cpp:112
        10 0x55b88b5fac7d in RecentBooksDlg::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_recentdlg.cpp:100
        11 0x55b88b5fb38d in RecentBooksDlg::qt_metacall(QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_recentdlg.cpp:136
        12 0x7fe9eb28968f  (/usr/lib64/libQt5Core.so.5+0x2e768f)
        13 0x7fe9ebec1d2d  (/usr/lib64/libQt5Widgets.so.5+0x320d2d)
    
    Indirect leak of 512 byte(s) in 4 object(s) allocated from:
        00 0x7fe9ec7f41f7 in operator new[](unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb01f7)
        01 0x55b88bbb24e8 in LVHashTable<lString32, lString32>::LVHashTable(int) coolreader/crengine/src/../include/lvhashtable.h:107
        02 0x55b88bf8ac59 in OpcPart::readRelations() coolreader/crengine/src/lvopc.cpp:73
        03 0x55b88bf89a55 in OpcPart::getRelatedPartName(char32_t const*, lString32) coolreader/crengine/src/lvopc.cpp:33
        04 0x55b88bc814b3 in fb3ImportContext::openBook() coolreader/crengine/src/fb3fmt.cpp:142
        05 0x55b88bc7f3b0 in ImportFb3Document(LVFastRef<LVStream>, ldomDocument*, LVDocViewCallback*, CacheLoadingCallback*) coolreader/crengine/src/fb3fmt.cpp:100
        06 0x55b88b98f789 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4445
        07 0x55b88b97ec85 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        08 0x55b88b452554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        09 0x55b88b427628 in RecentBooksDlg::openBook(int) coolreader/cr3qt/src/recentdlg.cpp:131
        10 0x55b88b4262c0 in RecentBooksDlg::on_buttonBox_accepted() coolreader/cr3qt/src/recentdlg.cpp:112
        11 0x55b88b5fac7d in RecentBooksDlg::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_recentdlg.cpp:100
        12 0x55b88b5fb38d in RecentBooksDlg::qt_metacall(QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_recentdlg.cpp:136
        13 0x7fe9eb28968f  (/usr/lib64/libQt5Core.so.5+0x2e768f)
        14 0x7fe9ebec1d2d  (/usr/lib64/libQt5Widgets.so.5+0x320d2d)
    
    Indirect leak of 96 byte(s) in 4 object(s) allocated from:
        00 0x7fe9ec7f4087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        01 0x55b88bbb2273 in LVHashTable<lString32, lString32>::set(lString32 const&, lString32) coolreader/crengine/src/../include/lvhashtable.h:174
        02 0x55b88bf8aec9 in OpcPart::readRelations() coolreader/crengine/src/lvopc.cpp:77
        03 0x55b88bf89a55 in OpcPart::getRelatedPartName(char32_t const*, lString32) coolreader/crengine/src/lvopc.cpp:33
        04 0x55b88bc814b3 in fb3ImportContext::openBook() coolreader/crengine/src/fb3fmt.cpp:142
        05 0x55b88bc7f3b0 in ImportFb3Document(LVFastRef<LVStream>, ldomDocument*, LVDocViewCallback*, CacheLoadingCallback*) coolreader/crengine/src/fb3fmt.cpp:100
        06 0x55b88b98f789 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4445
        07 0x55b88b97ec85 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        08 0x55b88b452554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        09 0x55b88b427628 in RecentBooksDlg::openBook(int) coolreader/cr3qt/src/recentdlg.cpp:131
        10 0x55b88b4262c0 in RecentBooksDlg::on_buttonBox_accepted() coolreader/cr3qt/src/recentdlg.cpp:112
        11 0x55b88b5fac7d in RecentBooksDlg::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_recentdlg.cpp:100
        12 0x55b88b5fb38d in RecentBooksDlg::qt_metacall(QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_recentdlg.cpp:136
        13 0x7fe9eb28968f  (/usr/lib64/libQt5Core.so.5+0x2e768f)
        14 0x7fe9ebec1d2d  (/usr/lib64/libQt5Widgets.so.5+0x320d2d)
    virxkane committed Jun 11, 2021
    Configuration menu
    Copy the full SHA
    6f83962 View commit details
    Browse the repository at this point in the history
  3. Memory leak fixed:

    Direct leak of 64 byte(s) in 1 object(s) allocated from:
        00 0x7ff64a52c087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        01 0x564d4a6375f6 in tinyNodeCollection::allocTinyElement(ldomNode*, unsigned short, unsigned short) coolreader/crengine/src/lvtinydom.cpp:16430
        02 0x564d4a5573aa in ldomDocument::ldomDocument() coolreader/crengine/src/lvtinydom.cpp:4136
        03 0x564d4a828137 in LVDocView::createEmptyDocument() coolreader/crengine/src/lvdocview.cpp:4797
        04 0x564d4a81461b in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4438
        05 0x564d4a804bc5 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        06 0x564d4a2d8554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        07 0x564d4a2d7d24 in CR3View::loadLastDocument() coolreader/cr3qt/src/cr3widget.cpp:468
        08 0x564d4a33e8a8 in MainWindow::showEvent(QShowEvent*) coolreader/cr3qt/src/mainwindow.cpp:467
        09 0x7ff649a86947 in QWidget::event(QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x1ad947)
        10 0x6150000223ff  (<unknown module>)
    virxkane committed Jun 11, 2021
    Configuration menu
    Copy the full SHA
    7a8b182 View commit details
    Browse the repository at this point in the history
  4. Memory leak fixed:

    Direct leak of 128 byte(s) in 2 object(s) allocated from:
        0 0x7f084fbb2087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        1 0x563f6643c10f in ldomNode::modify() coolreader/crengine/src/lvtinydom.cpp:19148
        2 0x563f66430684 in ldomNode::removeChild(unsigned int) coolreader/crengine/src/lvtinydom.cpp:18643
        3 0x563f6635598a in ldomNode::removeChildren(int, int) coolreader/crengine/src/lvtinydom.cpp:5845
        4 0x563f663567a4 in ldomNode::autoboxChildren(int, int, bool) coolreader/crengine/src/lvtinydom.cpp:5995
        5 0x563f6635d3b0 in ldomNode::initNodeRendMethod() coolreader/crengine/src/lvtinydom.cpp:6842
        6 0x563f663632aa in ldomElementWriter::onBodyExit() coolreader/crengine/src/lvtinydom.cpp:7815
        7 0x563f66364b37 in ldomElementWriter::~ldomElementWriter() coolreader/crengine/src/lvtinydom.cpp:7955
        8 0x563f663d87ca in ldomDocumentWriterFilter::popUpTo(ldomElementWriter*, unsigned short, int) coolreader/crengine/src/lvtinydom.cpp:13895
        9 0x563f663de026 in ldomDocumentWriterFilter::AutoOpenClosePop(int, unsigned short) coolreader/crengine/src/lvtinydom.cpp:14126
        10 0x563f663ed679 in ldomDocumentWriterFilter::OnTagClose(char32_t const*, char32_t const*, bool) coolreader/crengine/src/lvtinydom.cpp:14657
        11 0x563f6652b2e9 in LVXMLParser::Parse() coolreader/crengine/src/lvxml/lvxmlparser.cpp:278
        12 0x563f6653df6f in LVHTMLParser::Parse() coolreader/crengine/src/lvxml/lvhtmlparser.cpp:157
        13 0x563f66612696 in LVDocView::ParseDocument() coolreader/crengine/src/lvdocview.cpp:5023
        14 0x563f66604181 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4744
        15 0x563f665e2bf7 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        16 0x563f660b6554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        17 0x563f66111b27 in MainWindow::on_actionOpen_triggered() coolreader/cr3qt/src/mainwindow.cpp:249
        18 0x563f66250407 in MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_mainwindow.cpp:253
        19 0x563f66250f69 in MainWindow::qt_metacall(QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_mainwindow.cpp:295
        20 0x7f084e64768f  (/usr/lib64/libQt5Core.so.5+0x2e768f)
        21 0x7f084f0bdff1 in QAction::triggered(bool) (/usr/lib64/libQt5Widgets.so.5+0x15eff1)
    
    Direct leak of 64 byte(s) in 1 object(s) allocated from:
        0 0x7f084fbb2087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        1 0x563f6643c10f in ldomNode::modify() coolreader/crengine/src/lvtinydom.cpp:19148
        2 0x563f6642e7e5 in ldomNode::insertChildElement(unsigned int, unsigned short, unsigned short) coolreader/crengine/src/lvtinydom.cpp:18534
        3 0x563f6635636f in ldomNode::autoboxChildren(int, int, bool) coolreader/crengine/src/lvtinydom.cpp:5974
        4 0x563f6635d3b0 in ldomNode::initNodeRendMethod() coolreader/crengine/src/lvtinydom.cpp:6842
        5 0x563f663632aa in ldomElementWriter::onBodyExit() coolreader/crengine/src/lvtinydom.cpp:7815
        6 0x563f66364b37 in ldomElementWriter::~ldomElementWriter() coolreader/crengine/src/lvtinydom.cpp:7955
        7 0x563f663d87ca in ldomDocumentWriterFilter::popUpTo(ldomElementWriter*, unsigned short, int) coolreader/crengine/src/lvtinydom.cpp:13895
        8 0x563f663de026 in ldomDocumentWriterFilter::AutoOpenClosePop(int, unsigned short) coolreader/crengine/src/lvtinydom.cpp:14126
        9 0x563f663ed679 in ldomDocumentWriterFilter::OnTagClose(char32_t const*, char32_t const*, bool) coolreader/crengine/src/lvtinydom.cpp:14657
        10 0x563f6652b2e9 in LVXMLParser::Parse() coolreader/crengine/src/lvxml/lvxmlparser.cpp:278
        11 0x563f6653df6f in LVHTMLParser::Parse() coolreader/crengine/src/lvxml/lvhtmlparser.cpp:157
        12 0x563f66612696 in LVDocView::ParseDocument() coolreader/crengine/src/lvdocview.cpp:5023
        13 0x563f66604181 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4744
        14 0x563f665e2bf7 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        15 0x563f660b6554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        16 0x563f66111b27 in MainWindow::on_actionOpen_triggered() coolreader/cr3qt/src/mainwindow.cpp:249
        17 0x563f66250407 in MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_mainwindow.cpp:253
        18 0x563f66250f69 in MainWindow::qt_metacall(QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_mainwindow.cpp:295
        19 0x7f084e64768f  (/usr/lib64/libQt5Core.so.5+0x2e768f)
        20 0x7f084f0bdff1 in QAction::triggered(bool) (/usr/lib64/libQt5Widgets.so.5+0x15eff1)
    
    Direct leak of 64 byte(s) in 1 object(s) allocated from:
        0 0x7f084fbb2087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        1 0x563f66415628 in tinyNodeCollection::allocTinyElement(ldomNode*, unsigned short, unsigned short) coolreader/crengine/src/lvtinydom.cpp:16424
        2 0x563f6642eaa9 in ldomNode::insertChildElement(unsigned int, unsigned short, unsigned short) coolreader/crengine/src/lvtinydom.cpp:18538
        3 0x563f6635636f in ldomNode::autoboxChildren(int, int, bool) coolreader/crengine/src/lvtinydom.cpp:5974
        4 0x563f6635d3b0 in ldomNode::initNodeRendMethod() coolreader/crengine/src/lvtinydom.cpp:6842
        5 0x563f663632aa in ldomElementWriter::onBodyExit() coolreader/crengine/src/lvtinydom.cpp:7815
        6 0x563f66364b37 in ldomElementWriter::~ldomElementWriter() coolreader/crengine/src/lvtinydom.cpp:7955
        7 0x563f663d87ca in ldomDocumentWriterFilter::popUpTo(ldomElementWriter*, unsigned short, int) coolreader/crengine/src/lvtinydom.cpp:13895
        8 0x563f663de026 in ldomDocumentWriterFilter::AutoOpenClosePop(int, unsigned short) coolreader/crengine/src/lvtinydom.cpp:14126
        9 0x563f663ed679 in ldomDocumentWriterFilter::OnTagClose(char32_t const*, char32_t const*, bool) coolreader/crengine/src/lvtinydom.cpp:14657
        10 0x563f6652b2e9 in LVXMLParser::Parse() coolreader/crengine/src/lvxml/lvxmlparser.cpp:278
        11 0x563f6653df6f in LVHTMLParser::Parse() coolreader/crengine/src/lvxml/lvhtmlparser.cpp:157
        12 0x563f66612696 in LVDocView::ParseDocument() coolreader/crengine/src/lvdocview.cpp:5023
        13 0x563f66604181 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4744
        14 0x563f665e2bf7 in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        15 0x563f660b6554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        16 0x563f66111b27 in MainWindow::on_actionOpen_triggered() coolreader/cr3qt/src/mainwindow.cpp:249
        17 0x563f66250407 in MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_mainwindow.cpp:253
        18 0x563f66250f69 in MainWindow::qt_metacall(QMetaObject::Call, int, void**) coolreader-debug-build/cr3qt/src/moc_mainwindow.cpp:295
        19 0x7f084e64768f  (/usr/lib64/libQt5Core.so.5+0x2e768f)
        20 0x7f084f0bdff1 in QAction::triggered(bool) (/usr/lib64/libQt5Widgets.so.5+0x15eff1)
    
    Direct leak of 144 byte(s) in 2 object(s) allocated from:
        0 0x7f63aca6a087 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xb0087)
        1 0x55f5f438981a in CCRTable::LookupElem(ldomNode*, int, int) (coolreader-debug-build/cr3qt/cr3+0x1f6681a)
        2 0x55f5f4388cb3 in CCRTable::LookupElem(ldomNode*, int, int) (coolreader-debug-build/cr3qt/cr3+0x1f65cb3)
        3 0x55f5f43af7f9 in CCRTable::CCRTable(ldomNode*, int, bool, int, int, bool, bool, int, bool) coolreader/crengine/src/lvrend.cpp:2243
        4 0x55f5f4310333 in renderTable(LVRendPageContext&, ldomNode*, int, int, int, bool, int, int&, int, bool, bool, bool) coolreader/crengine/src/lvrend.cpp:2276
        5 0x55f5f433ff0c in renderBlockElementEnhanced(FlowState*, ldomNode*, int, int, unsigned int) coolreader/crengine/src/lvrend.cpp:7639
        6 0x55f5f4341c7b in renderBlockElementEnhanced(FlowState*, ldomNode*, int, int, unsigned int) coolreader/crengine/src/lvrend.cpp:7860
        7 0x55f5f43462bc in renderBlockElement(LVRendPageContext&, ldomNode*, int, int, int, int, int, int, int*, unsigned int) coolreader/crengine/src/lvrend.cpp:8393
        8 0x55f5f43465cb in renderBlockElement(LVRendPageContext&, ldomNode*, int, int, int, int, int, int, int*) coolreader/crengine/src/lvrend.cpp:8409
        9 0x55f5f42d05b0 in LVFormatter::measureText() coolreader/crengine/src/lvtextfm.cpp:2045
        10 0x55f5f42eeb05 in LVFormatter::processParagraph(int, int, bool) coolreader/crengine/src/lvtextfm.cpp:3809
        11 0x55f5f42f7062 in LVFormatter::splitParagraphs() coolreader/crengine/src/lvtextfm.cpp:4461
        12 0x55f5f42f7aad in LVFormatter::format() coolreader/crengine/src/lvtextfm.cpp:4508
        13 0x55f5f42aca7d in LFormattedText::Format(unsigned short, unsigned short, int, int, int, bool, BlockFloatFootprint*) coolreader/crengine/src/lvtextfm.cpp:4612
        14 0x55f5f4051aa8 in ldomNode::renderFinalBlock(LVRef<LFormattedText>&, RenderRectAccessor*, int, BlockFloatFootprint*) coolreader/crengine/src/lvtinydom.cpp:19074
        15 0x55f5f43432c8 in renderBlockElementEnhanced(FlowState*, ldomNode*, int, int, unsigned int) coolreader/crengine/src/lvrend.cpp:8167
        16 0x55f5f4341c7b in renderBlockElementEnhanced(FlowState*, ldomNode*, int, int, unsigned int) coolreader/crengine/src/lvrend.cpp:7860
        17 0x55f5f4341c7b in renderBlockElementEnhanced(FlowState*, ldomNode*, int, int, unsigned int) coolreader/crengine/src/lvrend.cpp:7860
        18 0x55f5f4341c7b in renderBlockElementEnhanced(FlowState*, ldomNode*, int, int, unsigned int) coolreader/crengine/src/lvrend.cpp:7860
        19 0x55f5f43462bc in renderBlockElement(LVRendPageContext&, ldomNode*, int, int, int, int, int, int, int*, unsigned int) coolreader/crengine/src/lvrend.cpp:8393
        20 0x55f5f43465cb in renderBlockElement(LVRendPageContext&, ldomNode*, int, int, int, int, int, int, int*) coolreader/crengine/src/lvrend.cpp:8409
        21 0x55f5f3f627eb in ldomDocument::render(LVRendPageList*, LVDocViewCallback*, int, int, bool, int, LVProtectedFastRef<LVFont>, int, LVFastRef<CRPropAccessor>, int, int) coolreader/crengine/src/lvtinydom.cpp:5259
        22 0x55f5f41d7d98 in LVDocView::Render(int, int, LVRendPageList*) coolreader/crengine/src/lvdocview.cpp:2897
        23 0x55f5f4189a0f in LVDocView::checkRender() coolreader/crengine/src/lvdocview.cpp:636
        24 0x55f5f41e707f in LVDocView::updateBookMarksRanges() coolreader/crengine/src/lvdocview.cpp:3396
        25 0x55f5f41f40f5 in LVDocView::restorePosition() coolreader/crengine/src/lvdocview.cpp:3967
        26 0x55f5f3ccf365 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:486
        27 0x55f5f3ccdd24 in CR3View::loadLastDocument() coolreader/cr3qt/src/cr3widget.cpp:468
        28 0x55f5f3d348a8 in MainWindow::showEvent(QShowEvent*) coolreader/cr3qt/src/mainwindow.cpp:467
        29 0x7f63abfc4947 in QWidget::event(QEvent*) (/usr/lib64/libQt5Widgets.so.5+0x1ad947)
    
    Indirect leak of 896 byte(s) in 28 object(s) allocated from:
        0 0x7fd0a64a4a88 in __interceptor_realloc (/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/libasan.so.6+0xaea88)
        1 0x560452fd10d6 in lxmlAttribute* cr_realloc<lxmlAttribute>(lxmlAttribute*, unsigned long) (coolreader-debug-build/cr3qt/cr3+0x1c890d6)
        2 0x560452fab09e in ldomAttributeCollection::set(unsigned short, unsigned short, unsigned int) coolreader/crengine/src/lvtinydom.cpp:3933
        3 0x560452f597b9 in ldomNode::setAttributeValue(unsigned short, unsigned short, char32_t const*) coolreader/crengine/src/lvtinydom.cpp:17001
        4 0x560453498b0a in fixupMathML coolreader/crengine/src/mathml.cpp:2157
        5 0x56045349635c in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1737
        6 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        7 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        8 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        9 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        10 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        11 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        12 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        13 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        14 0x560453496321 in fixupMathMLRecursive coolreader/crengine/src/mathml.cpp:1734
        15 0x56045349612f in fixupMathMLMathElement(ldomNode*) coolreader/crengine/src/mathml.cpp:1708
        16 0x560452e9f555 in ldomNode::initNodeRendMethod() coolreader/crengine/src/lvtinydom.cpp:7777
        17 0x560452ea023e in ldomElementWriter::onBodyExit() coolreader/crengine/src/lvtinydom.cpp:7819
        18 0x560452ea1acb in ldomElementWriter::~ldomElementWriter() coolreader/crengine/src/lvtinydom.cpp:7959
        19 0x560452f1575e in ldomDocumentWriterFilter::popUpTo(ldomElementWriter*, unsigned short, int) coolreader/crengine/src/lvtinydom.cpp:13899
        20 0x560452f1afba in ldomDocumentWriterFilter::AutoOpenClosePop(int, unsigned short) coolreader/crengine/src/lvtinydom.cpp:14130
        21 0x560452f2a60d in ldomDocumentWriterFilter::OnTagClose(char32_t const*, char32_t const*, bool) coolreader/crengine/src/lvtinydom.cpp:14661
        22 0x56045306835f in LVXMLParser::Parse() coolreader/crengine/src/lvxml/lvxmlparser.cpp:278
        23 0x56045307afe5 in LVHTMLParser::Parse() coolreader/crengine/src/lvxml/lvhtmlparser.cpp:157
        24 0x56045314f70c in LVDocView::ParseDocument() coolreader/crengine/src/lvdocview.cpp:5023
        25 0x5604531411f7 in LVDocView::loadDocumentInt(LVFastRef<LVStream>, bool) coolreader/crengine/src/lvdocview.cpp:4744
        26 0x56045311fc6d in LVDocView::LoadDocument(char32_t const*, bool) coolreader/crengine/src/lvdocview.cpp:4127
        27 0x560452bf3554 in CR3View::loadDocument(QString) coolreader/cr3qt/src/cr3widget.cpp:475
        28 0x560452bf2d24 in CR3View::loadLastDocument() coolreader/cr3qt/src/cr3widget.cpp:468
        29 0x560452c598a8 in MainWindow::showEvent(QShowEvent*) coolreader/cr3qt/src/mainwindow.cpp:467
    virxkane committed Jun 11, 2021
    Configuration menu
    Copy the full SHA
    7bc43c3 View commit details
    Browse the repository at this point in the history