Thread

  1. Re: Switch buffile.c/h to use pgoff_t

    Chao Li <li.evan.chao@gmail.com> — 2025-12-26T01:11:48Z

    
    > On Dec 26, 2025, at 07:45, Michael Paquier <michael@paquier.xyz> wrote:
    > 
    > On Thu, Dec 25, 2025 at 10:40:02AM +0800, Chao Li wrote:
    >> In attached v3, I have applied int64 to the 2 struct fields and
    >> corresponding local variables. I ran a clean build, no warning was
    >> introduced, and "make check" passed.
    > 
    > The advantage of being able to make the code transparently more
    > pluggable for max large sizes while we already use 8-byte offsets is
    > kind of nice, I guess.  "availbytes" is a clarification bonus as it is
    > not an offset per-se.  I can see that you have missed on cast spot, so
    > adjusted things a bit, then applied the result.
    > --
    > Michael
    
    Thanks a lot for pushing.
    
    WRT to the original (int) casts, I intentionally removed them, because file->nbytes, newOffset and file->curOffset are all signed 64 bit integers now. Compiling with -Wextra won’t get a warning, so technically, the type cast is no longer needed.
    
    I saw you changed to:
    ```
    - file->pos = (int) (newOffset - file->curOffset);
    + file->pos = (int64) (newOffset - file->curOffset);
    
    - file->pos = (int) (newOffset - file->curOffset);
    + file->pos = (int64) newOffset - file->curOffset;
    
    - file->nbytes = (int) (newOffset - file->curOffset);
    + file->nbytes = (int64) newOffset - file->curOffset;
    ``` 
    
    The latter two places missed (), but that should also work, just a little inconsistent.
    
    Best regards,
    --
    Chao Li (Evan)
    HighGo Software Co., Ltd.
    https://www.highgo.com/