[PATCH]ole32: compositemoniker unreached released code
[email protected]
alexis.deruelle at laposte.net
Thu Aug 14 08:47:47 CDT 2003
Hi,
This (untested) patch below hopefully fixes a bug from the
evil "Smatch buglist".
Patch against 20030709.
Comments welcome.
Cheers,
Alex.
Fix potentially unreached release code in
CompositeMonikerImpl_IsEqual.
diff -urN wine-20030709.old/dlls/ole32/compositemoniker.c
wine-20030709/dlls/ole32/compositemoniker.c
--- wine-20030709.old/dlls/ole32/compositemoniker.c
2003-06-18 05:30:40.000000000 +0200
+++ wine-20030709/dlls/ole32/compositemoniker.c 2003-08-14
15:03:41.000000000 +0200
@@ -845,28 +845,20 @@
IMoniker_Enum(iface,TRUE,&enumMoniker2);
- while(1){
+ res = res1 = res2 = S_OK
+ /* end loop if either */
+ /* - both components are different ( res == S_FALSE ), or */
+ /* - both enum are at end ( res1 == S_FALSE and res2 ==
S_FALSE ) */
+ while (res == S_OK
+ && !(res1 == S_FALSE && res2 == S_FALSE)) {
res1=IEnumMoniker_Next(enumMoniker1,1,&tempMk1,NULL);
res2=IEnumMoniker_Next(enumMoniker2,1,&tempMk2,NULL);
- if((res1==S_OK)&&(res2==S_OK)){
-
- if(IMoniker_IsEqual(tempMk1,tempMk2)==S_FALSE){
- res= S_FALSE;
- break;
- }
- else
- continue;
- }
- else if ( (res1==S_FALSE) && (res2==S_FALSE) ){
- res = S_OK;
- break;
- }
- else{
+ if ((res1 == S_OK) && (res2 == S_OK))
+ res = IMoniker_IsEqual(tempMk1, tempMk2);
+ else
res = S_FALSE;
- break;
- }
if (res1==S_OK)
IMoniker_Release(tempMk1);
Accédez au courrier électronique de La Poste : www.laposte.net ;
3615 LAPOSTENET (0,34/mn) ; tél : 08 92 68 13 50 (0,34/mn)
More information about the wine-patches
mailing list