[RPCRT4] Sync with Wine Staging 3.9. CORE-14656
authorAmine Khaldi <amine.khaldi@reactos.org>
Mon, 4 Jun 2018 02:49:11 +0000 (03:49 +0100)
committerAmine Khaldi <amine.khaldi@reactos.org>
Mon, 4 Jun 2018 02:49:11 +0000 (03:49 +0100)
dll/win32/rpcrt4/ndr_marshall.c
dll/win32/rpcrt4/rpc_server.c
media/doc/README.WINE

index ee58b60..6356fb9 100644 (file)
@@ -5745,11 +5745,16 @@ static unsigned char *union_arm_marshall(PMIDL_STUB_MESSAGE pStubMsg, unsigned c
                   pStubMsg->Buffer = saved_buffer + 4;
                 }
                 break;
+            case RPC_FC_IP:
+                /* must be dereferenced first */
+                m(pStubMsg, *(unsigned char **)pMemory, desc);
+                break;
             default:
                 m(pStubMsg, pMemory, desc);
             }
         }
-        else FIXME("no marshaller for embedded type %02x\n", *desc);
+        else if (*desc)
+            FIXME("no marshaller for embedded type %02x\n", *desc);
     }
     return NULL;
 }
@@ -5814,11 +5819,16 @@ static unsigned char *union_arm_unmarshall(PMIDL_STUB_MESSAGE pStubMsg,
                   pStubMsg->Buffer = saved_buffer + 4;
                 }
                 break;
+            case RPC_FC_IP:
+                /* must be dereferenced first */
+                m(pStubMsg, *(unsigned char ***)ppMemory, desc, fMustAlloc);
+                break;
             default:
                 m(pStubMsg, ppMemory, desc, fMustAlloc);
             }
         }
-        else FIXME("no marshaller for embedded type %02x\n", *desc);
+        else if (*desc)
+            FIXME("no marshaller for embedded type %02x\n", *desc);
     }
     return NULL;
 }
@@ -5868,11 +5878,16 @@ static void union_arm_buffer_size(PMIDL_STUB_MESSAGE pStubMsg,
                     pStubMsg->BufferLength = saved_buffer_length;
                 }
                 break;
+            case RPC_FC_IP:
+                /* must be dereferenced first */
+                m(pStubMsg, *(unsigned char **)pMemory, desc);
+                break;
             default:
                 m(pStubMsg, pMemory, desc);
             }
         }
-        else FIXME("no buffersizer for embedded type %02x\n", *desc);
+        else if (*desc)
+            FIXME("no buffersizer for embedded type %02x\n", *desc);
     }
 }
 
@@ -5920,7 +5935,8 @@ static ULONG union_arm_memory_size(PMIDL_STUB_MESSAGE pStubMsg,
                 return m(pStubMsg, desc);
             }
         }
-        else FIXME("no marshaller for embedded type %02x\n", *desc);
+        else if (*desc)
+            FIXME("no marshaller for embedded type %02x\n", *desc);
     }
 
     TRACE("size %d\n", size);
@@ -5955,6 +5971,10 @@ static void union_arm_free(PMIDL_STUB_MESSAGE pStubMsg,
             case RPC_FC_FP:
                 PointerFree(pStubMsg, *(unsigned char **)pMemory, desc);
                 break;
+            case RPC_FC_IP:
+                /* must be dereferenced first */
+                m(pStubMsg, *(unsigned char **)pMemory, desc);
+                break;
             default:
                 m(pStubMsg, pMemory, desc);
             }
index d1b5d64..91de3b9 100644 (file)
@@ -1220,7 +1220,8 @@ RPC_STATUS WINAPI RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid
 
   EnterCriticalSection(&server_cs);
   LIST_FOR_EACH_ENTRY(cif, &server_interfaces, RpcServerInterface, entry) {
-    if ((!IfSpec || !memcmp(&If->InterfaceId, &cif->If->InterfaceId, sizeof(RPC_SYNTAX_IDENTIFIER))) &&
+    if (((!IfSpec && !(cif->Flags & RPC_IF_AUTOLISTEN)) ||
+        (IfSpec && !memcmp(&If->InterfaceId, &cif->If->InterfaceId, sizeof(RPC_SYNTAX_IDENTIFIER)))) &&
         UuidEqual(MgrTypeUuid, &cif->MgrTypeUuid, &status)) {
       list_remove(&cif->entry);
       TRACE("unregistering cif %p\n", cif);
index 4e58c63..32a8639 100644 (file)
@@ -160,7 +160,7 @@ reactos/dll/win32/rasapi32            # Synced to WineStaging-3.3
 reactos/dll/win32/resutils            # Synced to WineStaging-3.3
 reactos/dll/win32/riched20            # Synced to WineStaging-3.9
 reactos/dll/win32/riched32            # Synced to WineStaging-3.3
-reactos/dll/win32/rpcrt4              # Synced to WineStaging-3.3
+reactos/dll/win32/rpcrt4              # Synced to WineStaging-3.9
 reactos/dll/win32/rsabase             # Synced to WineStaging-3.3
 reactos/dll/win32/rsaenh              # Synced to WineStaging-2.9
 reactos/dll/win32/sccbase             # Synced to WineStaging-3.3