On 25.04.2013 09:59, Henri Verbeet wrote:
-static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct 
fragment_pipeline *fragment_pipe)
+static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct 
wined3d_vertex_pipe_ops *vertex_pipe,
+        const struct fragment_pipeline *fragment_pipe)
  {
      struct shader_arb_priv *priv = HeapAlloc(GetProcessHeap(), 
HEAP_ZERO_MEMORY, sizeof(*priv));
      struct fragment_caps fragment_caps;
-    void *fragment_priv;
+    void *vertex_priv, *fragment_priv;
+
+    if (!(vertex_priv = vertex_pipe->vp_alloc(&arb_program_shader_backend, 
priv)))
+    {
+        ERR("Failed to initialize vertex pipe.\n");
+        HeapFree(GetProcessHeap(), 0, priv);
+        return E_FAIL;
+    }

      if (!(fragment_priv = 
fragment_pipe->alloc_private(&arb_program_shader_backend, priv)))
      {
          ERR("Failed to initialize fragment pipe.\n");
+        fragment_pipe->free_private(device);

Shouldn't that vertex_pipe->vp_free(device)?

          HeapFree(GetProcessHeap(), 0, priv);
          return E_FAIL;
      }



Reply via email to