[PATCH v5 2/8] mf: Check for empty argument and insufficient nodes in _Load.

Nikolay Sivov nsivov at codeweavers.com
Thu Apr 23 08:21:01 CDT 2020


On 4/23/20 6:28 AM, Sergio Gómez Del Real wrote:
> diff --git a/dlls/mf/topology.c b/dlls/mf/topology.c
> index 0b4d734442..72cb6062cc 100644
> --- a/dlls/mf/topology.c
> +++ b/dlls/mf/topology.c
> @@ -1926,6 +1926,9 @@ static HRESULT WINAPI topology_loader_Load(IMFTopoLoader *iface, IMFTopology *in
>       if (current_topology)
>           FIXME("Current topology instance is ignored.\n");
>   
> +    if (!topology || topology->nodes.count < 2)
> +        return MF_E_TOPO_UNSUPPORTED;
> +
>       for (i = 0; i < topology->nodes.count; ++i)
>       {
>           struct topology_node *node = topology->nodes.nodes[i];
That would come naturally, if we did some kind of reduction of input 
topology, by removing dangling nodes and branches.

What's left should be connected, and have at least on input and one 
output, which gives you those two nodes. Just two input nodes,
or dangling branches will contribute to node count, but are still 
invalid. As I remember it actually does remove disconnected pieces,
and the rest is resolved.

So the point is, we could do some extra steps that we'll need anyway - 
reduce, identify those edges/connection pairs, and if you got no
pairs to resolves that's your TOPO_UNSUPPORTED condition.



More information about the wine-devel mailing list