Nikolay Sivov (@nsivov) commented about dlls/opcservices/tests/opcservices.c:
- hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
- ok(hr == S_OK, "Failed to create a stream, hr %#lx.\n", hr);
- hr = IOpcFactory_WritePackageToStream(factory, package, OPC_WRITE_FORCE_ZIP32, stream);
- ok(hr == S_OK, "Failed to write package, hr %#lx.\n", hr);
- IOpcPackage_Release(package);
- hr = IStream_Seek(stream, start, STREAM_SEEK_SET, NULL);
- ok(hr == S_OK, "Failed to seek stream, hr %#lx.\n", hr);
- hr = IOpcFactory_ReadPackageFromStream(factory, stream, OPC_READ_DEFAULT, &package);
- todo_wine ok(hr == S_OK, "Failed to read package, hr %#lx.\n", hr);
- IStream_Release(stream);
- if (FAILED(hr))
- {
IOpcPackage_Release(package);
goto done;
- }
If it failed you shouldn't release the package. The fact that it works means there is a leak somewhere probably.