This is an unsound thing to do: queue_copy now owns second and shall free() it when it's destroyed.  You have no business also giving second to queue; you no longer own this pointer.