Convert a curve to a mesh WITHOUT using bpy.ops (preserve original object ref)

If I understand correctly, you want a curve converted into a stand-alone mesh type object, while leaving the source alone?

I wrote this some while ago. This uses bpy.data.meshes.new_from_object to do the heavy lifting of converting from a curve to a mesh, and assigns it to a new object.