static inline void file_entry_free(FileEntry *file_entry) { if (!file_entry) return; if (file_entry->file_name) { DEBUG_WRAP(DebugMessage(DEBUG_FILE, "File name: %s released (%p)\n", file_entry->file_name, file_entry->file_name)); free(file_entry->file_name); file_entry->file_name = NULL; file_entry->file_name_size = 0; } if (file_entry->context) { file_context_free(file_entry->context); file_entry->context = NULL; } file_entry->file_size = 0; file_segments_free(file_entry); }
static void file_session_free(void *session_data) { FileSession *file_session = (FileSession *)session_data; if (!file_session) return; /*Clean up all the file contexts*/ if ( file_session->pending_context && (file_session->main_context != file_session->pending_context)) { file_context_free(file_session->pending_context); } file_context_free(file_session->main_context); free(file_session); }
/*Get the current working file context*/ static inline void save_to_pending_context(void *ssnptr) { FileSession *file_session = get_file_session (ssnptr); /* Save to pending_context */ if (!file_session) return; if (file_session->pending_context != file_session->main_context) file_context_free(file_session->pending_context); file_session->pending_context = file_session->main_context; }