quartz: Casts-qual warnings fix (2 of 2)

Andrew Talbot Andrew.Talbot at talbotville.com
Sat Nov 11 05:04:40 CST 2006


Changelog:
    quartz: Casts-qual warning fix.

diff -urN a/dlls/quartz/regsvr.c b/dlls/quartz/regsvr.c
--- a/dlls/quartz/regsvr.c	2006-10-25 17:34:31.000000000 +0100
+++ b/dlls/quartz/regsvr.c	2006-11-11 10:26:46.000000000 +0000
@@ -582,6 +582,7 @@
 	for (; SUCCEEDED(hr) && list->clsid; ++list) {
 	    REGFILTER2 rf2;
 	    REGFILTERPINS2* prfp2;
+	    REGPINTYPES** media_type;
 	    int i;
 
 	    for (i = 0; list->pins[i].flags != 0xFFFFFFFF; i++) ;
@@ -593,23 +594,27 @@
 		hr = E_OUTOFMEMORY;
 		break;
 	    }
+	    media_type = CoTaskMemAlloc(i*sizeof(REGPINTYPES*));
+	    if (!media_type) {
+		hr = E_OUTOFMEMORY;
+		break;
+	    }
 	    for (i = 0; list->pins[i].flags != 0xFFFFFFFF; i++) {
-		REGPINTYPES* lpMediatype;
 		CLSID* lpClsid;
 		int j, nbmt;
-                
+
 		for (nbmt = 0; list->pins[i].mediatypes[nbmt].majortype; nbmt++) ;
 		/* Allocate a single buffer for regpintypes struct and clsids */
-		lpMediatype = (REGPINTYPES*) CoTaskMemAlloc(nbmt*(sizeof(REGPINTYPES) + 2*sizeof(CLSID)));
-		if (!lpMediatype) {
+		media_type[i] = (REGPINTYPES*) CoTaskMemAlloc(nbmt*(sizeof(REGPINTYPES) + 2*sizeof(CLSID)));
+		if (!media_type[i]) {
 		    hr = E_OUTOFMEMORY;
 		    break;
 		}
-		lpClsid = (CLSID*) (lpMediatype + nbmt);
+		lpClsid = (CLSID*) (media_type[i] + nbmt);
 		for (j = 0; j < nbmt; j++) {
-		    (lpMediatype + j)->clsMajorType = lpClsid + j*2;
+		    (media_type[i] + j)->clsMajorType = lpClsid + j*2;
 		    memcpy(lpClsid + j*2, list->pins[i].mediatypes[j].majortype, sizeof(CLSID));
-		    (lpMediatype + j)->clsMinorType = lpClsid + j*2 + 1;
+		    (media_type[i] + j)->clsMinorType = lpClsid + j*2 + 1;
 		    if (list->pins[i].mediatypes[j].subtype)
 			memcpy(lpClsid + j*2 + 1, list->pins[i].mediatypes[j].subtype, sizeof(CLSID));
 		    else {
@@ -621,7 +626,7 @@
 		prfp2[i].dwFlags = list->pins[i].flags;
 		prfp2[i].cInstances = 0;
 		prfp2[i].nMediaTypes = j;
-		prfp2[i].lpMediaType = lpMediatype;
+		prfp2[i].lpMediaType = media_type[i];
 		prfp2[i].nMediums = 0;
 		prfp2[i].lpMedium = NULL;
 		prfp2[i].clsPinCategory = NULL;
@@ -636,9 +641,10 @@
 	    hr = IFilterMapper2_RegisterFilter(pFM2, list->clsid, list->name, NULL, list->category, NULL, &rf2);
 
 	    while (i) {
-		CoTaskMemFree((REGPINTYPES*)prfp2[i-1].lpMediaType);
+		CoTaskMemFree(media_type[i-1]);
 		i--;
 	    }
+	    CoTaskMemFree(media_type);
 	    CoTaskMemFree(prfp2);
 	}
     }



More information about the wine-patches mailing list