Maybe I'm reading this wrong, but: the code in GFFormsModel::save_input() for deleting old lead details when replacing them with new values, looks like it will never delete the long details (and thus will fail when updating details with a long details component).
Currently, the lead detail record is deleted first, then the long detail record. Deleting the long detail record uses a sub-query that looks for the lead detail record -- but you've already deleted that. The order of deletion should be reversed.
cheers,
Ross