[PATCH] Fix 16 bit StringFromGUID2 to not use wide characters
Michael Karcher
wine at mkarcher.dialup.fu-berlin.de
Mon May 19 02:28:01 CDT 2008
---
dlls/ole32/compobj.c | 1 -
dlls/ole32/compobj.spec | 2 +-
dlls/ole32/ole16.c | 31 +++++++++++++++++++++++++++++++
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index 7280150..c4eec23 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -1399,7 +1399,6 @@ HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
/******************************************************************************
* StringFromGUID2 [OLE32.@]
- * StringFromGUID2 [COMPOBJ.76]
*
* Modified version of StringFromCLSID that allows you to specify max
* buffer size.
diff --git a/dlls/ole32/compobj.spec b/dlls/ole32/compobj.spec
index 3ac8568..390a212 100644
--- a/dlls/ole32/compobj.spec
+++ b/dlls/ole32/compobj.spec
@@ -72,7 +72,7 @@
72 stub _IID_IEXTERNALCONNECTION
73 pascal CoCreateGuid(ptr) CoCreateGuid
75 stub FNASSERT
-76 pascal StringFromGUID2(ptr ptr word) StringFromGUID2
+76 pascal StringFromGUID2(ptr ptr word) StringFromGUID2_16
77 stub COGETCLASSEXT
78 stub OLE1CLASSFROMCLSID2
79 stub CLSIDFROMOLE1CLASS
diff --git a/dlls/ole32/ole16.c b/dlls/ole32/ole16.c
index d19a817..61e9915 100644
--- a/dlls/ole32/ole16.c
+++ b/dlls/ole32/ole16.c
@@ -399,6 +399,37 @@ HRESULT WINAPI StringFromCLSID16(
}
/******************************************************************************
+ * StringFromGUID2_16 [COMPOBJ.76]
+ *
+ * Modified version of StringFromCLSID that allows you to specify max
+ * buffer size.
+ *
+ * PARAMS
+ * id [I] GUID to convert to string.
+ * str [O] Buffer where the result will be stored.
+ * cmax [I] Size of the buffer in characters.
+ *
+ * RETURNS
+ * Success: The length of the resulting string in characters.
+ * Failure: 0.
+ */
+INT WINAPI StringFromGUID2_16(REFGUID id, LPSTR str, INT cmax)
+{
+ char xguid[80];
+ int len;
+
+ if (WINE_StringFromCLSID( id, xguid ))
+ return 0;
+
+ len = strlen( xguid ) + 1; /* The terminating zero counts */
+ if (len > cmax)
+ return 0;
+
+ strcpy( str, xguid );
+ return len;
+}
+
+/******************************************************************************
* ProgIDFromCLSID [COMPOBJ.62]
*
* Converts a class id into the respective Program ID. (By using a registry lookup)
--
1.5.5.1
More information about the wine-patches
mailing list