version: Constify a formal parameter of VerQueryValue{A|W}()

Andrew Talbot Andrew.Talbot at talbotville.com
Wed Feb 14 11:15:49 CST 2007


This patch constifies the first parameter of VerQueryValue{A|W}(). However, I
was unable to find a better way than this, which introduces four new cast-qual
warnings (for lines 704, 745, 786, 834.

If you reject this patch, please advise on what needs doing to make it
acceptable.

Thanks,

-- Andy.
---
Changelog:
    version: Constify a formal parameter of VerQueryValue{A|W}().

diff -urN a/dlls/version/info.c b/dlls/version/info.c
--- a/dlls/version/info.c	2007-02-14 15:56:13.000000000 +0000
+++ b/dlls/version/info.c	2007-02-13 23:32:37.000000000 +0000
@@ -46,7 +46,7 @@
  *      Added this function to clean up the code.
  *
  *****************************************************************************/
-static void print_vffi_debug(VS_FIXEDFILEINFO *vffi)
+static void print_vffi_debug(const VS_FIXEDFILEINFO *vffi)
 {
     BOOL    versioned_printer = FALSE;
 
@@ -207,10 +207,10 @@
 } VS_VERSION_INFO_STRUCT32;
 
 #define VersionInfoIs16( ver ) \
-    ( ((VS_VERSION_INFO_STRUCT16 *)ver)->szKey[0] >= ' ' )
+    ( ((const VS_VERSION_INFO_STRUCT16 *)ver)->szKey[0] >= ' ' )
 
 #define DWORD_ALIGN( base, ptr ) \
-    ( (LPBYTE)(base) + ((((LPBYTE)(ptr) - (LPBYTE)(base)) + 3) & ~3) )
+    ( (const BYTE *)(base) + ((((const BYTE *)(ptr) - (const BYTE *)(base)) + 3) & ~3) )
 
 #define VersionInfo16_Value( ver )  \
     DWORD_ALIGN( (ver), (ver)->szKey + strlen((ver)->szKey) + 1 )
@@ -218,17 +218,17 @@
     DWORD_ALIGN( (ver), (ver)->szKey + strlenW((ver)->szKey) + 1 )
 
 #define VersionInfo16_Children( ver )  \
-    (VS_VERSION_INFO_STRUCT16 *)( VersionInfo16_Value( ver ) + \
+    (const VS_VERSION_INFO_STRUCT16 *)( VersionInfo16_Value( ver ) + \
                            ( ( (ver)->wValueLength + 3 ) & ~3 ) )
 #define VersionInfo32_Children( ver )  \
-    (VS_VERSION_INFO_STRUCT32 *)( VersionInfo32_Value( ver ) + \
+    (const VS_VERSION_INFO_STRUCT32 *)( VersionInfo32_Value( ver ) + \
                            ( ( (ver)->wValueLength * \
                                ((ver)->wType? 2 : 1) + 3 ) & ~3 ) )
 
 #define VersionInfo16_Next( ver ) \
-    (VS_VERSION_INFO_STRUCT16 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) )
+    (const VS_VERSION_INFO_STRUCT16 *)( (const BYTE *)ver + (((ver)->wLength + 3) & ~3) )
 #define VersionInfo32_Next( ver ) \
-    (VS_VERSION_INFO_STRUCT32 *)( (LPBYTE)ver + (((ver)->wLength + 3) & ~3) )
+    (const VS_VERSION_INFO_STRUCT32 *)( (const BYTE *)ver + (((ver)->wLength + 3) & ~3) )
 
 /***********************************************************************
  *           VERSION_GetFileVersionInfo_PE             [internal]
@@ -238,7 +238,7 @@
  */
 static DWORD VERSION_GetFileVersionInfo_PE( LPCWSTR filename, DWORD datasize, LPVOID data )
 {
-    VS_FIXEDFILEINFO *vffi;
+    const VS_FIXEDFILEINFO *vffi;
     DWORD len;
     BYTE *buf;
     HMODULE hModule;
@@ -276,7 +276,7 @@
     }
     buf = LockResource(hMem);
 
-    vffi = (VS_FIXEDFILEINFO *)VersionInfo32_Value( (VS_VERSION_INFO_STRUCT32 *)buf );
+    vffi = (const VS_FIXEDFILEINFO *)VersionInfo32_Value( (VS_VERSION_INFO_STRUCT32 *)buf );
 
     if ( vffi->dwSignature != VS_FFI_SIGNATURE )
     {
@@ -313,7 +313,7 @@
  */
 static DWORD VERSION_GetFileVersionInfo_16( LPCSTR filename, DWORD datasize, LPVOID data )
 {
-    VS_FIXEDFILEINFO *vffi;
+    const VS_FIXEDFILEINFO *vffi;
     DWORD len, offset;
     BYTE *buf;
     HMODULE16 hModule;
@@ -363,7 +363,7 @@
                                  offset, datasize, data );
         if (len)
         {
-            vffi = (VS_FIXEDFILEINFO *)VersionInfo16_Value( (VS_VERSION_INFO_STRUCT16 *)data );
+            vffi = (const VS_FIXEDFILEINFO *)VersionInfo16_Value( (VS_VERSION_INFO_STRUCT16 *)data );
 
             if ( vffi->dwSignature == VS_FFI_SIGNATURE )
             {
@@ -410,7 +410,7 @@
 	goto END;
     }
 
-    vffi = (VS_FIXEDFILEINFO *)VersionInfo16_Value( (VS_VERSION_INFO_STRUCT16 *)buf );
+    vffi = (const VS_FIXEDFILEINFO *)VersionInfo16_Value( (VS_VERSION_INFO_STRUCT16 *)buf );
 
     if ( vffi->dwSignature != VS_FFI_SIGNATURE )
     {
@@ -633,12 +633,12 @@
 /***********************************************************************
  *           VersionInfo16_FindChild             [internal]
  */
-static VS_VERSION_INFO_STRUCT16 *VersionInfo16_FindChild( VS_VERSION_INFO_STRUCT16 *info,
+static const VS_VERSION_INFO_STRUCT16 *VersionInfo16_FindChild( const VS_VERSION_INFO_STRUCT16 *info,
                                             LPCSTR szKey, UINT cbKey )
 {
-    VS_VERSION_INFO_STRUCT16 *child = VersionInfo16_Children( info );
+    const VS_VERSION_INFO_STRUCT16 *child = VersionInfo16_Children( info );
 
-    while ((char *)child < (char *)info + info->wLength )
+    while ((const char *)child < (const char *)info + info->wLength )
     {
         if ( !strncasecmp( child->szKey, szKey, cbKey ) )
             return child;
@@ -653,12 +653,12 @@
 /***********************************************************************
  *           VersionInfo32_FindChild             [internal]
  */
-static VS_VERSION_INFO_STRUCT32 *VersionInfo32_FindChild( VS_VERSION_INFO_STRUCT32 *info,
+static const VS_VERSION_INFO_STRUCT32 *VersionInfo32_FindChild( const VS_VERSION_INFO_STRUCT32 *info,
                                             LPCWSTR szKey, UINT cbKey )
 {
-    VS_VERSION_INFO_STRUCT32 *child = VersionInfo32_Children( info );
+    const VS_VERSION_INFO_STRUCT32 *child = VersionInfo32_Children( info );
 
-    while ((char *)child < (char *)info + info->wLength )
+    while ((const char *)child < (const char *)info + info->wLength )
     {
         if ( !strncmpiW( child->szKey, szKey, cbKey ) )
             return child;
@@ -674,7 +674,7 @@
  *
  *    Gets a value from a 16-bit NE resource
  */
-static BOOL WINAPI VersionInfo16_QueryValue( VS_VERSION_INFO_STRUCT16 *info, LPCSTR lpSubBlock,
+static BOOL WINAPI VersionInfo16_QueryValue( const VS_VERSION_INFO_STRUCT16 *info, LPCSTR lpSubBlock,
                                LPVOID *lplpBuffer, UINT *puLen )
 {
     while ( *lpSubBlock )
@@ -701,7 +701,7 @@
     }
 
     /* Return value */
-    *lplpBuffer = VersionInfo16_Value( info );
+    *lplpBuffer = (LPBYTE)VersionInfo16_Value( info );
     if (puLen)
         *puLen = info->wValueLength;
 
@@ -713,7 +713,7 @@
  *
  *    Gets a value from a 32-bit PE resource
  */
-static BOOL WINAPI VersionInfo32_QueryValue( VS_VERSION_INFO_STRUCT32 *info, LPCWSTR lpSubBlock,
+static BOOL WINAPI VersionInfo32_QueryValue( const VS_VERSION_INFO_STRUCT32 *info, LPCWSTR lpSubBlock,
                                LPVOID *lplpBuffer, UINT *puLen )
 {
     TRACE("lpSubBlock : (%s)\n", debugstr_w(lpSubBlock));
@@ -742,7 +742,7 @@
     }
 
     /* Return value */
-    *lplpBuffer = VersionInfo32_Value( info );
+    *lplpBuffer = (LPBYTE)VersionInfo32_Value( info );
     if (puLen)
         *puLen = info->wValueLength;
 
@@ -752,12 +752,12 @@
 /***********************************************************************
  *           VerQueryValueA              [VERSION.@]
  */
-BOOL WINAPI VerQueryValueA( LPVOID pBlock, LPCSTR lpSubBlock,
+BOOL WINAPI VerQueryValueA( LPCVOID pBlock, LPCSTR lpSubBlock,
                                LPVOID *lplpBuffer, UINT *puLen )
 {
     static const char rootA[] = "\\";
     static const char varfileinfoA[] = "\\VarFileInfo\\Translation";
-    VS_VERSION_INFO_STRUCT16 *info = (VS_VERSION_INFO_STRUCT16 *)pBlock;
+    const VS_VERSION_INFO_STRUCT16 *info = (const VS_VERSION_INFO_STRUCT16 *)pBlock;
 
     TRACE("(%p,%s,%p,%p)\n",
                 pBlock, debugstr_a(lpSubBlock), lplpBuffer, puLen );
@@ -783,7 +783,7 @@
         if (ret && strcasecmp( lpSubBlock, rootA ) && strcasecmp( lpSubBlock, varfileinfoA ))
         {
             LPSTR lpBufferA = (LPSTR)pBlock + info->wLength + 4;
-            DWORD pos = (LPSTR)*lplpBuffer - (LPSTR)pBlock;
+            DWORD pos = (LPSTR)*lplpBuffer - (LPCSTR)pBlock;
 
             len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)*lplpBuffer, -1,
                                       lpBufferA + pos, info->wLength - pos, NULL, NULL);
@@ -799,14 +799,14 @@
 /***********************************************************************
  *           VerQueryValueW              [VERSION.@]
  */
-BOOL WINAPI VerQueryValueW( LPVOID pBlock, LPCWSTR lpSubBlock,
+BOOL WINAPI VerQueryValueW( LPCVOID pBlock, LPCWSTR lpSubBlock,
                                LPVOID *lplpBuffer, UINT *puLen )
 {
     static const WCHAR rootW[] = { '\\', 0 };
     static const WCHAR varfileinfoW[] = { '\\','V','a','r','F','i','l','e','I','n','f','o',
                                           '\\','T','r','a','n','s','l','a','t','i','o','n', 0 };
 
-    VS_VERSION_INFO_STRUCT32 *info = (VS_VERSION_INFO_STRUCT32 *)pBlock;
+    const VS_VERSION_INFO_STRUCT32 *info = (const VS_VERSION_INFO_STRUCT32 *)pBlock;
 
     TRACE("(%p,%s,%p,%p)\n",
                 pBlock, debugstr_w(lpSubBlock), lplpBuffer, puLen );
@@ -831,8 +831,8 @@
 
         if (ret && strcmpiW( lpSubBlock, rootW ) && strcmpiW( lpSubBlock, varfileinfoW ))
         {
-            LPWSTR lpBufferW = (LPWSTR)((LPSTR)pBlock + info->wLength);
-            DWORD pos = (LPSTR)*lplpBuffer - (LPSTR)pBlock;
+            LPWSTR lpBufferW = (LPWSTR)((LPCSTR)pBlock + info->wLength);
+            DWORD pos = (LPSTR)*lplpBuffer - (LPCSTR)pBlock;
             DWORD max = (info->wLength - sizeof(VS_FIXEDFILEINFO)) * 4 - info->wLength;
 
             len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)*lplpBuffer, -1,
diff -urN a/include/winver.h b/include/winver.h
--- a/include/winver.h	2007-02-14 15:56:18.000000000 +0000
+++ b/include/winver.h	2007-02-13 21:53:48.000000000 +0000
@@ -159,8 +159,8 @@
 DWORD       WINAPI VerLanguageNameA(UINT,LPSTR,UINT);
 DWORD       WINAPI VerLanguageNameW(UINT,LPWSTR,UINT);
 #define     VerLanguageName WINELIB_NAME_AW(VerLanguageName)
-BOOL        WINAPI VerQueryValueA(LPVOID,LPCSTR,LPVOID*,UINT*);
-BOOL        WINAPI VerQueryValueW(LPVOID,LPCWSTR,LPVOID*,UINT*);
+BOOL        WINAPI VerQueryValueA(LPCVOID,LPCSTR,LPVOID*,UINT*);
+BOOL        WINAPI VerQueryValueW(LPCVOID,LPCWSTR,LPVOID*,UINT*);
 #define     VerQueryValue WINELIB_NAME_AW(VerQueryValue)
 DWORD       WINAPI GetFileVersionInfoSizeA(LPCSTR,LPDWORD);
 DWORD       WINAPI GetFileVersionInfoSizeW(LPCWSTR,LPDWORD);



More information about the wine-patches mailing list