oleaut32 [3/10]: Add a proxy for objidl.

Dan Hipschman dsh at linux.ucla.edu
Mon Oct 29 21:19:47 CDT 2007


This adds the objidl proxy to oleaut32.  It also updates DllGetClassObject
to fall back on OLEAUTPS_DllGetClassObject.  This is basically what would
happen if we had a dlldata.c file for oleaut32, but that's impossible
since oleaut32 is too special a case.

---
 .gitignore                        |    2 ++
 dlls/oleaut32/Makefile.in         |    3 ++-
 dlls/oleaut32/oleaut.c            |    3 +--
 dlls/oleaut32/oleaut32_objidl.idl |   25 +++++++++++++++++++++++++
 dlls/oleaut32/usrmarshal.c        |    2 ++
 5 files changed, 32 insertions(+), 3 deletions(-)
 create mode 100644 dlls/oleaut32/oleaut32_objidl.idl

diff --git a/.gitignore b/.gitignore
index ef34ce6..6ec2cce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -340,6 +340,8 @@ dlls/oleaut32/liboleaut32.def
 dlls/oleaut32/oleaut32.res
 dlls/oleaut32/oleaut32_oaidl.h
 dlls/oleaut32/oleaut32_oaidl_p.c
+dlls/oleaut32/oleaut32_objidl.h
+dlls/oleaut32/oleaut32_objidl_p.c
 dlls/oleaut32/tests/*.ok
 dlls/oleaut32/tests/oleaut32_crosstest.exe
 dlls/oleaut32/tests/test_tlb.tlb
diff --git a/dlls/oleaut32/Makefile.in b/dlls/oleaut32/Makefile.in
index 18390a6..2cf6374 100644
--- a/dlls/oleaut32/Makefile.in
+++ b/dlls/oleaut32/Makefile.in
@@ -40,7 +40,8 @@ SPEC_SRCS16 = \
 RC_SRCS = oleaut32.rc
 
 IDL_P_SRCS = \
-	oleaut32_oaidl.idl
+	oleaut32_oaidl.idl \
+	oleaut32_objidl.idl
 
 @MAKE_DLL_RULES@
 
diff --git a/dlls/oleaut32/oleaut.c b/dlls/oleaut32/oleaut.c
index f756d83..7fb3e3c 100644
--- a/dlls/oleaut32/oleaut.c
+++ b/dlls/oleaut32/oleaut.c
@@ -799,8 +799,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
 	    return S_OK;
 	/*FALLTHROUGH*/
     }
-    FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid));
-    return CLASS_E_CLASSNOTAVAILABLE;
+    return OLEAUTPS_DllGetClassObject(rclsid, iid, ppv);
 }
 
 /***********************************************************************
diff --git a/dlls/oleaut32/oleaut32_objidl.idl b/dlls/oleaut32/oleaut32_objidl.idl
new file mode 100644
index 0000000..4d0a64c
--- /dev/null
+++ b/dlls/oleaut32/oleaut32_objidl.idl
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2007 Google (Dan Hipschman)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* The header file generated from this includes rpc.h, which ends up
+   including objidl.h at some point.  This will cause all sorts of errors
+   so the easiest thing to do is just comment out our entire header.  */
+
+cpp_quote("#if 0    /* oleaut32_objidl.idl hack */")
+#include "objidl.idl"
+cpp_quote("#endif   /* oleaut32_objidl.idl hack */")
diff --git a/dlls/oleaut32/usrmarshal.c b/dlls/oleaut32/usrmarshal.c
index 7ad2e67..f842857 100644
--- a/dlls/oleaut32/usrmarshal.c
+++ b/dlls/oleaut32/usrmarshal.c
@@ -50,9 +50,11 @@ static CStdPSFactoryBuffer PSFactoryBuffer;
 CSTDSTUBBUFFERRELEASE(&PSFactoryBuffer)
 
 extern const ExtendedProxyFileInfo oleaut32_oaidl_ProxyFileInfo;
+extern const ExtendedProxyFileInfo oleaut32_objidl_ProxyFileInfo;
 
 static const ProxyFileInfo *OLEAUT32_ProxyFileList[] = {
   &oleaut32_oaidl_ProxyFileInfo,
+  &oleaut32_objidl_ProxyFileInfo,
   NULL
 };
 



More information about the wine-patches mailing list