I noticed that Context::copy_path() wraps the call to cairo_copy_path() and allocates an instance of Path on the heap, and ~Path cleans it up by calling cairo_path_destroy(). It seems like Context::copy_path() should return a RefPtr<Path> instead...