tree 6d1edd09b85cc9cfdbea819f64335979a13846f8
parent 8df7e775d75f8dcf022640ace60f524f55c8ce0f
author Hugo Lefeuvre <hugo.lefeuvre@savoirfairelinux.com> 1536862810 -0400
committer Sébastien Blin <sebastien.blin@savoirfairelinux.com> 1536955489 -0400

fix memory leaks, hazardous frees and misc issues

accountgeneraltab:
+ remove useless <iostream> import

accountmigrationview:
+ remove useless <iostream> import
+ add missing <memory> import

currentcallview:
+ remove useless <iostream> import
+ add missing <memory> and <string> import
+ use g_debug instead of std::cout (not the standard debug output)

ringmainwindow:
+ fix multiple memory leaks in print_account_and_state(),
  on_clear_all_history_foreach() and changeAccountSelection()
+ fix use of deprecated method gtk_entry_set_icon_from_stock()
+ use G_GNUC_UNUSED to remove unused parameter warnings
+ remove various unused variables
+ remove unused function on_save_accounts_timeout()
+ fix multiple places where char* was passed to printf-style function
  with %i formatter

ringwelcomeview:
+ fix multiple memory leaks in ring_welcome_update_view() and
  render_account_avatar()
+ return FALSE in case of failure in draw_qrcode()

webkitchatcontainer:
+ webkit_chat_container_execute_js should take const char*, not char*
+ return true in case of success in webview_chat_context_menu()

usernameregistrationbox:
+ make "Enter the password of your Ring account" string translatable

ring_client:
+ fix multiple memory leaks in ring_client_open()

ring_notify:
+ improve ring_hide_notification() return values
+ fix multiple potential hazardous free() calls

video_widget:
+ fix leak in case of error in video_widget_on_drag_data_received()
+ fix hazardous free() call in switch_video_input_file() (uri might be
  NULL even if the answer of the dialog is GTK_RESPONSE_ACCEPT)

Change-Id: I7db8b63ba1b8ad272d464d0739b2fe24cc18c0b4
Gitlab: #917
Gitlab: #821
Reviewed-by: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
