Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

Description

@borlandong

Describe the bug
The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

Environment

  • Arm Cortex M7
  • ThreadX 6.4.1
  • arm-gnu-toolchain-13.3
  • Device: W25N01GV NAND Flash
  • Stack: LevelX + FileX
  • Test file size: 680KB

Problem Analysis
During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

Performance Impact
I implemented LevelX + FileX on W25N01GV and measured the following performance:

Before fix:

  • Write 680KB file: 2258 ms
  • Read 680KB file: 10954 ms

After fix:

  • Write 680KB file: 1757 ms
  • Read 680KB file: 3113 ms

Improvement:

  • Write performance: ~22% faster
  • Read performance: ~3.5x faster (252% improvement)

The read performance improvement is particularly significant, making this fix essential.

Proposed Solution
Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

Additional context
I have already prepared a fix for this issue and will submit a PR shortly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

    Description

    @borlandong

    Describe the bug
    The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

    Environment

    • Arm Cortex M7
    • ThreadX 6.4.1
    • arm-gnu-toolchain-13.3
    • Device: W25N01GV NAND Flash
    • Stack: LevelX + FileX
    • Test file size: 680KB

    Problem Analysis
    During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

    Performance Impact
    I implemented LevelX + FileX on W25N01GV and measured the following performance:

    Before fix:

    • Write 680KB file: 2258 ms
    • Read 680KB file: 10954 ms

    After fix:

    • Write 680KB file: 1757 ms
    • Read 680KB file: 3113 ms

    Improvement:

    • Write performance: ~22% faster
    • Read performance: ~3.5x faster (252% improvement)

    The read performance improvement is particularly significant, making this fix essential.

    Proposed Solution
    Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

    Additional context
    I have already prepared a fix for this issue and will submit a PR shortly.

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      bugSomething isn't working

      Type

      No type

      Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

      Description

      @borlandong

      Describe the bug
      The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

      Environment

      • Arm Cortex M7
      • ThreadX 6.4.1
      • arm-gnu-toolchain-13.3
      • Device: W25N01GV NAND Flash
      • Stack: LevelX + FileX
      • Test file size: 680KB

      Problem Analysis
      During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

      Performance Impact
      I implemented LevelX + FileX on W25N01GV and measured the following performance:

      Before fix:

      • Write 680KB file: 2258 ms
      • Read 680KB file: 10954 ms

      After fix:

      • Write 680KB file: 1757 ms
      • Read 680KB file: 3113 ms

      Improvement:

      • Write performance: ~22% faster
      • Read performance: ~3.5x faster (252% improvement)

      The read performance improvement is particularly significant, making this fix essential.

      Proposed Solution
      Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

      Additional context
      I have already prepared a fix for this issue and will submit a PR shortly.

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        bugSomething isn't working

        Type

        No type

        Projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

        Description

        @borlandong

        Describe the bug
        The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

        Environment

        • Arm Cortex M7
        • ThreadX 6.4.1
        • arm-gnu-toolchain-13.3
        • Device: W25N01GV NAND Flash
        • Stack: LevelX + FileX
        • Test file size: 680KB

        Problem Analysis
        During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

        Performance Impact
        I implemented LevelX + FileX on W25N01GV and measured the following performance:

        Before fix:

        • Write 680KB file: 2258 ms
        • Read 680KB file: 10954 ms

        After fix:

        • Write 680KB file: 1757 ms
        • Read 680KB file: 3113 ms

        Improvement:

        • Write performance: ~22% faster
        • Read performance: ~3.5x faster (252% improvement)

        The read performance improvement is particularly significant, making this fix essential.

        Proposed Solution
        Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

        Additional context
        I have already prepared a fix for this issue and will submit a PR shortly.

        Metadata

        Metadata

        Assignees

        No one assigned

          Labels

          bugSomething isn't working

          Type

          No type

          Projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

          Description

          @borlandong

          Describe the bug
          The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

          Environment

          • Arm Cortex M7
          • ThreadX 6.4.1
          • arm-gnu-toolchain-13.3
          • Device: W25N01GV NAND Flash
          • Stack: LevelX + FileX
          • Test file size: 680KB

          Problem Analysis
          During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

          Performance Impact
          I implemented LevelX + FileX on W25N01GV and measured the following performance:

          Before fix:

          • Write 680KB file: 2258 ms
          • Read 680KB file: 10954 ms

          After fix:

          • Write 680KB file: 1757 ms
          • Read 680KB file: 3113 ms

          Improvement:

          • Write performance: ~22% faster
          • Read performance: ~3.5x faster (252% improvement)

          The read performance improvement is particularly significant, making this fix essential.

          Proposed Solution
          Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

          Additional context
          I have already prepared a fix for this issue and will submit a PR shortly.

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            bugSomething isn't working

            Type

            No type

            Projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

            Description

            @borlandong

            Describe the bug
            The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

            Environment

            • Arm Cortex M7
            • ThreadX 6.4.1
            • arm-gnu-toolchain-13.3
            • Device: W25N01GV NAND Flash
            • Stack: LevelX + FileX
            • Test file size: 680KB

            Problem Analysis
            During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

            Performance Impact
            I implemented LevelX + FileX on W25N01GV and measured the following performance:

            Before fix:

            • Write 680KB file: 2258 ms
            • Read 680KB file: 10954 ms

            After fix:

            • Write 680KB file: 1757 ms
            • Read 680KB file: 3113 ms

            Improvement:

            • Write performance: ~22% faster
            • Read performance: ~3.5x faster (252% improvement)

            The read performance improvement is particularly significant, making this fix essential.

            Proposed Solution
            Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

            Additional context
            I have already prepared a fix for this issue and will submit a PR shortly.

            Metadata

            Metadata

            Assignees

            No one assigned

              Labels

              bugSomething isn't working

              Type

              No type

              Projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

              Description

              @borlandong

              Describe the bug
              The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

              Environment

              • Arm Cortex M7
              • ThreadX 6.4.1
              • arm-gnu-toolchain-13.3
              • Device: W25N01GV NAND Flash
              • Stack: LevelX + FileX
              • Test file size: 680KB

              Problem Analysis
              During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

              Performance Impact
              I implemented LevelX + FileX on W25N01GV and measured the following performance:

              Before fix:

              • Write 680KB file: 2258 ms
              • Read 680KB file: 10954 ms

              After fix:

              • Write 680KB file: 1757 ms
              • Read 680KB file: 3113 ms

              Improvement:

              • Write performance: ~22% faster
              • Read performance: ~3.5x faster (252% improvement)

              The read performance improvement is particularly significant, making this fix essential.

              Proposed Solution
              Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

              Additional context
              I have already prepared a fix for this issue and will submit a PR shortly.

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                bugSomething isn't working

                Type

                No type

                Projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                Performance Issue: Unnecessary main data area read in _lx_nand_flash_sector_read #64

                Description

                @borlandong

                Describe the bug
                The function _lx_nand_flash_sector_read has a serious performance issue. The current implementation reads both the main data area and spare data area of the entire page when matching logical sector numbers, which is unnecessary and causes significant performance degradation.

                Environment

                • Arm Cortex M7
                • ThreadX 6.4.1
                • arm-gnu-toolchain-13.3
                • Device: W25N01GV NAND Flash
                • Stack: LevelX + FileX
                • Test file size: 680KB

                Problem Analysis
                During the logical sector number matching process, we only need to read the spare area data. Reading the main data area at this stage is completely unnecessary and severely impacts performance.

                Performance Impact
                I implemented LevelX + FileX on W25N01GV and measured the following performance:

                Before fix:

                • Write 680KB file: 2258 ms
                • Read 680KB file: 10954 ms

                After fix:

                • Write 680KB file: 1757 ms
                • Read 680KB file: 3113 ms

                Improvement:

                • Write performance: ~22% faster
                • Read performance: ~3.5x faster (252% improvement)

                The read performance improvement is particularly significant, making this fix essential.

                Proposed Solution
                Optimize _lx_nand_flash_sector_read to read only the spare area during logical sector matching. The NAND flash driver should check if the main data area pointer is NULL and skip reading the main data area accordingly.

                Additional context
                I have already prepared a fix for this issue and will submit a PR shortly.

                Metadata

                Metadata

                Assignees

                No one assigned

                  Labels

                  bugSomething isn't working

                  Type

                  No type

                  Projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions