let FileWrite take a source buffer it will not write to

FileWrite took its source as PTR, a mutable void*, though it only reads it:
the buffer goes straight to vfs::tWritableFile::write, which takes a const
vfs::Byte*. STIConvert.cpp pads a file a byte at a time with

    FileWrite(hFile, "", 1, NULL);

and a string literal is a const char[1], which PTR cannot hold.

Declaring the parameter const void* matches what the function does and what
the layer below it already asks for. The cast inside becomes const as well.
None of the 431 calls change: every pointer, const or not, converts to
const void*.

JA2EncryptedFileWrite and NewJA2EncryptedFileWrite have the same shape but
transform the buffer on the way out, so they keep PTR.

Verification:

    ninja -C build parse         # STIConvert.cpp clean
    ninja -C build -k 0          # Release, four applications, green
    ninja -C build-debug -k 0    # Debug, four applications, green

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Marco Antonio J. Costa
2026-07-23 19:29:55 -03:00
committed by majcosta
co-authored by Claude Opus 4.8
parent a7dcdcaec3
commit 6d2df6addc
2 changed files with 3 additions and 3 deletions
+2 -2
View File
@@ -491,7 +491,7 @@ BOOLEAN FileReadLine( HWFILE hFile, std::string* pDest )
//
//**************************************************************************
BOOLEAN FileWrite( HWFILE hFile, PTR pDest, UINT32 uiBytesToWrite, UINT32 *puiBytesWritten )
BOOLEAN FileWrite( HWFILE hFile, const void* pDest, UINT32 uiBytesToWrite, UINT32 *puiBytesWritten )
{
if(uiBytesToWrite == 0)//dnl ch38 110909
{
@@ -507,7 +507,7 @@ BOOLEAN FileWrite( HWFILE hFile, PTR pDest, UINT32 uiBytesToWrite, UINT32 *puiBy
UINT32 uiBytesWritten;
try
{
uiBytesWritten = pWF->write((vfs::Byte*)pDest, uiBytesToWrite);
uiBytesWritten = pWF->write((const vfs::Byte*)pDest, uiBytesToWrite);
}
catch(std::exception& ex)
{
+1 -1
View File
@@ -90,7 +90,7 @@ extern void FileClose( HWFILE );
extern BOOLEAN FileRead( HWFILE hFile, PTR pDest, UINT32 uiBytesToRead, UINT32 *puiBytesRead );
extern BOOLEAN FileReadLine( HWFILE hFile, std::string* pDest );
extern BOOLEAN FileWrite( HWFILE hFile, PTR pDest, UINT32 uiBytesToWrite, UINT32 *puiBytesWritten );
extern BOOLEAN FileWrite( HWFILE hFile, const void* pDest, UINT32 uiBytesToWrite, UINT32 *puiBytesWritten );
extern BOOLEAN FileLoad( STR filename, PTR pDest, UINT32 uiBytesToRead, UINT32 *puiBytesRead );
extern BOOLEAN _cdecl FilePrintf( HWFILE hFile, STR8 strFormatted, ... );