From 9588deb54c08ac1f9a858f700608476ab331afa9 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 29 Oct 2012 12:14:19 +0100 Subject: [PATCH] msi: Preserve strings with embedded nulls when copying from the string table to a record. --- dlls/msi/msiquery.c | 7 +++---- dlls/msi/package.c | 2 +- dlls/msi/select.c | 5 +++-- dlls/msi/table.c | 9 +++++---- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c index 4b826f85811..451fdddbbb0 100644 --- a/dlls/msi/msiquery.c +++ b/dlls/msi/msiquery.c @@ -345,10 +345,9 @@ UINT msi_view_get_row(MSIDATABASE *db, MSIVIEW *view, UINT row, MSIRECORD **rec) if (type & MSITYPE_STRING) { - LPCWSTR sval; - - sval = msi_string_lookup(db->strings, ival, NULL); - MSI_RecordSetStringW(*rec, i, sval); + int len; + const WCHAR *sval = msi_string_lookup( db->strings, ival, &len ); + msi_record_set_string( *rec, i, sval, len ); } else { diff --git a/dlls/msi/package.c b/dlls/msi/package.c index a050b2eb54b..6528b85fd0c 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -2181,7 +2181,7 @@ UINT msi_get_property( MSIDATABASE *db, LPCWSTR szName, } if (rc == ERROR_SUCCESS) - TRACE("returning %s for property %s\n", debugstr_w(szValueBuf), + TRACE("returning %s for property %s\n", debugstr_wn(szValueBuf, *pchValueBuf), debugstr_w(szName)); else if (rc == ERROR_MORE_DATA) TRACE("need %d sized buffer for %s\n", *pchValueBuf, diff --git a/dlls/msi/select.c b/dlls/msi/select.c index 982cf6a9369..ada4eedc8ac 100644 --- a/dlls/msi/select.c +++ b/dlls/msi/select.c @@ -276,8 +276,9 @@ static UINT msi_select_update(struct tagMSIVIEW *view, MSIRECORD *rec, UINT row) } else if (type & MSITYPE_STRING) { - str = MSI_RecordGetString(rec, i + 1); - r = MSI_RecordSetStringW(mod, col, str); + int len; + str = msi_record_get_string( rec, i + 1, &len ); + r = msi_record_set_string( mod, col, str, len ); } else { diff --git a/dlls/msi/table.c b/dlls/msi/table.c index 3276259b2bf..78c00b12dc0 100644 --- a/dlls/msi/table.c +++ b/dlls/msi/table.c @@ -2340,12 +2340,13 @@ static MSIRECORD *msi_get_transform_record( const MSITABLEVIEW *tv, const string } else if( columns[i].type & MSITYPE_STRING ) { - LPCWSTR sval; + int len; + const WCHAR *sval; val = read_raw_int(rawdata, ofs, bytes_per_strref); - sval = msi_string_lookup( st, val, NULL ); - MSI_RecordSetStringW( rec, i+1, sval ); - TRACE(" field %d [%s]\n", i+1, debugstr_w(sval)); + sval = msi_string_lookup( st, val, &len ); + msi_record_set_string( rec, i+1, sval, len ); + TRACE(" field %d [%s]\n", i+1, debugstr_wn(sval, len)); ofs += bytes_per_strref; } else