Zebediah Figura : msi: Store a record's associated query privately.

Alexandre Julliard julliard at winehq.org
Wed Apr 18 15:13:20 CDT 2018


Module: wine
Branch: master
Commit: 9d121203955da5c761cfb5c22b6428278e41f0c7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9d121203955da5c761cfb5c22b6428278e41f0c7

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Apr 17 19:11:28 2018 -0500

msi: Store a record's associated query privately.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msi/msipriv.h  |  4 +---
 dlls/msi/msiquery.c |  5 +++--
 dlls/msi/record.c   | 48 ------------------------------------------------
 3 files changed, 4 insertions(+), 53 deletions(-)

diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index b2b3e7c..9bc6413 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -131,7 +131,6 @@ typedef struct tagMSIFIELD
     union
     {
         INT iVal;
-        INT_PTR pVal;
         LPWSTR szwVal;
         IStream *stream;
     } u;
@@ -141,6 +140,7 @@ typedef struct tagMSIFIELD
 typedef struct tagMSIRECORD
 {
     MSIOBJECTHDR hdr;
+    MSIQUERY *query;
     UINT count;       /* as passed to MsiCreateRecord */
     MSIFIELD fields[1]; /* nb. array size is count+1 */
 } MSIRECORD;
@@ -813,13 +813,11 @@ extern UINT MSI_RecordGetIStream( MSIRECORD *, UINT, IStream **) DECLSPEC_HIDDEN
 extern const WCHAR *MSI_RecordGetString( const MSIRECORD *, UINT ) DECLSPEC_HIDDEN;
 extern MSIRECORD *MSI_CreateRecord( UINT ) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordSetInteger( MSIRECORD *, UINT, int ) DECLSPEC_HIDDEN;
-extern UINT MSI_RecordSetIntPtr( MSIRECORD *, UINT, INT_PTR ) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordSetStringW( MSIRECORD *, UINT, LPCWSTR ) DECLSPEC_HIDDEN;
 extern BOOL MSI_RecordIsNull( MSIRECORD *, UINT ) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordGetStringW( MSIRECORD * , UINT, LPWSTR, LPDWORD) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordGetStringA( MSIRECORD *, UINT, LPSTR, LPDWORD) DECLSPEC_HIDDEN;
 extern int MSI_RecordGetInteger( MSIRECORD *, UINT ) DECLSPEC_HIDDEN;
-extern INT_PTR MSI_RecordGetIntPtr( MSIRECORD *, UINT ) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordReadStream( MSIRECORD *, UINT, char *, LPDWORD) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordSetStream(MSIRECORD *, UINT, IStream *) DECLSPEC_HIDDEN;
 extern UINT MSI_RecordGetFieldCount( const MSIRECORD *rec ) DECLSPEC_HIDDEN;
diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c
index f8ed4ce..1ba3076 100644
--- a/dlls/msi/msiquery.c
+++ b/dlls/msi/msiquery.c
@@ -374,7 +374,8 @@ UINT MSI_ViewFetch(MSIQUERY *query, MSIRECORD **prec)
     if (r == ERROR_SUCCESS)
     {
         query->row ++;
-        MSI_RecordSetIntPtr(*prec, 0, (INT_PTR)query);
+        (*prec)->query = query;
+        MSI_RecordSetInteger(*prec, 0, 1);
     }
 
     return r;
@@ -608,7 +609,7 @@ UINT MSI_ViewModify( MSIQUERY *query, MSIMODIFY mode, MSIRECORD *rec )
     if ( !view  || !view->ops->modify)
         return ERROR_FUNCTION_FAILED;
 
-    if ( mode == MSIMODIFY_UPDATE && MSI_RecordGetIntPtr( rec, 0 ) != (INT_PTR)query )
+    if ( mode == MSIMODIFY_UPDATE && rec->query != query )
         return ERROR_FUNCTION_FAILED;
 
     r = view->ops->modify( view, mode, rec, query->row );
diff --git a/dlls/msi/record.c b/dlls/msi/record.c
index de45191..8254b17 100644
--- a/dlls/msi/record.c
+++ b/dlls/msi/record.c
@@ -46,7 +46,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msidb);
 #define MSIFIELD_INT    1
 #define MSIFIELD_WSTR   3
 #define MSIFIELD_STREAM 4
-#define MSIFIELD_INTPTR 5
 
 static void MSI_FreeField( MSIFIELD *field )
 {
@@ -54,7 +53,6 @@ static void MSI_FreeField( MSIFIELD *field )
     {
     case MSIFIELD_NULL:
     case MSIFIELD_INT:
-    case MSIFIELD_INTPTR:
         break;
     case MSIFIELD_WSTR:
         msi_free( field->u.szwVal);
@@ -190,9 +188,6 @@ UINT MSI_RecordCopyField( MSIRECORD *in_rec, UINT in_n,
         case MSIFIELD_INT:
             out->u.iVal = in->u.iVal;
             break;
-        case MSIFIELD_INTPTR:
-            out->u.pVal = in->u.pVal;
-            break;
         case MSIFIELD_WSTR:
             if ((str = msi_strdupW( in->u.szwVal, in->len )))
             {
@@ -216,32 +211,6 @@ UINT MSI_RecordCopyField( MSIRECORD *in_rec, UINT in_n,
     return r;
 }
 
-INT_PTR MSI_RecordGetIntPtr( MSIRECORD *rec, UINT iField )
-{
-    int ret;
-
-    TRACE( "%p %d\n", rec, iField );
-
-    if( iField > rec->count )
-        return MININT_PTR;
-
-    switch( rec->fields[iField].type )
-    {
-    case MSIFIELD_INT:
-        return rec->fields[iField].u.iVal;
-    case MSIFIELD_INTPTR:
-        return rec->fields[iField].u.pVal;
-    case MSIFIELD_WSTR:
-        if( string2intW( rec->fields[iField].u.szwVal, &ret ) )
-            return ret;
-        return MININT_PTR;
-    default:
-        break;
-    }
-
-    return MININT_PTR;
-}
-
 int MSI_RecordGetInteger( MSIRECORD *rec, UINT iField)
 {
     int ret = 0;
@@ -255,8 +224,6 @@ int MSI_RecordGetInteger( MSIRECORD *rec, UINT iField)
     {
     case MSIFIELD_INT:
         return rec->fields[iField].u.iVal;
-    case MSIFIELD_INTPTR:
-        return rec->fields[iField].u.pVal;
     case MSIFIELD_WSTR:
         if( string2intW( rec->fields[iField].u.szwVal, &ret ) )
             return ret;
@@ -311,20 +278,6 @@ UINT WINAPI MsiRecordClearData( MSIHANDLE handle )
     return ERROR_SUCCESS;
 }
 
-UINT MSI_RecordSetIntPtr( MSIRECORD *rec, UINT iField, INT_PTR pVal )
-{
-    TRACE("%p %u %ld\n", rec, iField, pVal);
-
-    if( iField > rec->count )
-        return ERROR_INVALID_PARAMETER;
-
-    MSI_FreeField( &rec->fields[iField] );
-    rec->fields[iField].type = MSIFIELD_INTPTR;
-    rec->fields[iField].u.pVal = pVal;
-
-    return ERROR_SUCCESS;
-}
-
 UINT MSI_RecordSetInteger( MSIRECORD *rec, UINT iField, int iVal )
 {
     TRACE("%p %u %d\n", rec, iField, iVal);
@@ -1095,7 +1048,6 @@ void dump_record(MSIRECORD *rec)
         case MSIFIELD_NULL: TRACE("(null)"); break;
         case MSIFIELD_INT: TRACE("%d", rec->fields[i].u.iVal); break;
         case MSIFIELD_WSTR: TRACE("%s", debugstr_w(rec->fields[i].u.szwVal)); break;
-        case MSIFIELD_INTPTR: TRACE("%ld", rec->fields[i].u.pVal); break;
         case MSIFIELD_STREAM: TRACE("%p", rec->fields[i].u.stream); break;
         }
         if (i < rec->count) TRACE(", ");




More information about the wine-cvs mailing list