Multiple CNTRL Z replaces properties in driver
Open, ConfirmedPublic

Description

System Information
Win7 64bit

Blender Version
Broken: 2.79

Short description of error
I was copying drivers from one object to another and hiding (H) those with already pasted driver. At some point I wanted to unhide previous object, so used undo instead of ALT H to bring back only one object. After object was revealed, I do not re-copy driver just paste what was already in memory. I make three undo's (just the step before copying driver), so I didn't expect this will corrupt driver's data. Would be better to make "paste" not happen, rather than changing it.

Original driver


Pasted driver after some undo's

Exact steps for others to reproduce the error

  1. Copy driver from texture slot of left cube
  2. Hide left cube in viewport
  3. Paste driver in texture slot of right cube
  4. Pres CTRL Z three times until left cube will appear back
  5. Then repeat pasting driver from stage 3 -> driver's properties have been replaced by another

Details

Type
Bug
Joshua Leung (aligorith) triaged this task as Confirmed priority.Oct 1 2017, 5:59 AM
Joshua Leung (aligorith) claimed this task.

I've been suspecting that something like this may happen at some point (thought it turns out I was looking in the wrong place last time I checked, when investigating some of the Grease Pencil copy-paste crashes).

The problem is that Copy-Paste buffer stores pointers to the "old" (i.e. pre-undo) datablocks, with these pointers not getting updated to the new copies of those datablocks after each undo/redo step (i.e. since undo steps effectively reload the file from memory, invalidiating all old pointers). Currently there aren't any hooks in the undo code to perform this sort of remapping for copy/paste buffers.