efa549ef introduced a _removeUrlPrefix() method which expected its 'editable' parameter to be a GtkEntry (either the base repo URL entry box, or an additional repo's URL entry box). However, it had the on_repoUrl_changed() handler call _removeUrlPrefix() with its own 'editable' parameter, and then had the protocol combo box call the on_repoUrl_changed() handler when it was changed, as well as the URL entry box. The intent is that if, say, you paste in 'https://www.repo.com' while the protocol is set to http://, then change the protocol to https://, the protocol will get stripped - but because 'editable' in this case is the GtkComboBoxText, not the GtkEntry, it all goes wrong and crashes. The crash is reproducible by adding a supplementary repo, entering a URL, then changing the protocol.
This adjusts things so the handler functions that call _removeUrlPrefix() don't pass in their own 'editable' params but always pass in the appropriate GtkEntry. It also makes the protocol combo box for the base repo call the appropriate handler function as well as the text entry box - matching the behaviour the original commit introduced for the additional repo widgets (I guess this was simply overlooked at the time).
I've tested this and all four widgets now behave as expected, and there are no crashes.
So the problem is that on_repoUrl_changed is connected to both a GtkEntry and a GtkComboBox? The fact that this needs a scary comment to explain the situation says to me that this isn't the best idea. Why not just have on_repoProtocolComboBox_changed call self._repoUrlEntry.emit("changed")
anaconda-patches@lists.fedorahosted.org