Be sure to call packed_string.hash, not self.hash.

self.hash returns the right value, but unfortunately does it by
calling self.pack.