pll_utree_SPR() function shouldn't make any guesses about new branch lengths after pruning®rafting. It should set p_matrix indexes in a way that all p_matrices are still valid after SPR move.
This 'minimalistic' function could also go into the core libpll, and in the modules we could provide some higher-level functionality, e.g. a flag for updating p_matrices, optimizing brlens or a separate helper function for setting all 3 brlens after an SPR (see #4).