Skip to content

[6.42] [hbook] Pass the full 64 bit buffer address to HBNAM - #23966

Merged
guitargeek merged 1 commit into
root-project:v6-42-00-patchesfrom
root-project-bot:BP_6.42_pull_23938
Nov 4, 2026
Merged

guitargeek merged 1 commit into
root-project:v6-42-00-patchesfrom
root-project-bot:BP_6.42_pull_23938

Conversation

@root-project-bot

Copy link
Copy Markdown

Backport of #23938, requested by @guitargeek.

Since 21cb0e6 (6.40.04), LOCF returns the full 64 bit word address
instead of the low 32 bits. HNMADR computes the word offset of a
column-wise ntuple variable as IADDW - LOCF(IQ(1)), but h2root and
THbookFile still passed the buffer address to HBNAM as a 32 bit int, so
IADDW lost bits 32 and 33 of the address while LOCF kept them. The
stored offset was off by a multiple of 2^30 words whenever those bits
were set, which is the case for most PIE placements, and HGNT2 then
wrote the ntuple columns to a wild address.

Pass the address as INTEGER*8 through HBNAM and compute the offset from
the full addresses. THbookFile::SetBranchAddress also passed the value
stored at the user pointer instead of the pointer; it now passes the
address like the other call sites.

Add a roottest that converts a small column-wise ntuple with h2root.
The input file is written by the included mkcwn.f with CERNLIB.

Fixes root-project#23628

Assisted-by: claude-code:claude-fable-5-1
(cherry picked from commit 25df3ab)
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown

Test Results

    24 files      24 suites   3d 23h 32m 57s ⏱️
 3 906 tests  3 905 ✅ 0 💤 1 ❌
83 661 runs  83 660 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 7c48ce6.

@guitargeek
guitargeek merged commit 75cce03 into root-project:v6-42-00-patches Nov 4, 2026
41 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants