Taking ownership of pooled paths in SetPath is wrong, many callers store and reuse their own path instance between calls, so a path instance could end up having two owners that overwrite each other.
To reduce surface area for bugs paths will not be pooled for now, and SetPath will copy into its own buffer not take ownership.