I missed something in our discussion on IRC - PrimitiveDecode does implicitly makes the assumption that v is a pointer.  The data from primValue have to be unpacked and written into `v`.  This won't work unless `v` is a ptr.