From 41aa602f27eac4ac84cfb775f41cde964514fd10 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Mon, 16 Jun 2014 09:42:59 -0600 Subject: [PATCH] Document key/value lifecycle. This commit adds a caveat to the godoc that explains how key and value byte slices will only be valid for the life of the transaction. --- doc.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc.go b/doc.go index b127f59..cc93784 100644 --- a/doc.go +++ b/doc.go @@ -33,8 +33,12 @@ Caveats The database uses a read-only, memory-mapped data file to ensure that applications cannot corrupt the database, however, this means that keys and values returned from Bolt cannot be changed. Writing to a read-only byte slice -will cause Go to panic. If you need to work with data returned from a Get() you -need to first copy it to a new byte slice. +will cause Go to panic. + +Keys and values retrieved from the database are only valid for the life of +the transaction. When used outside the transaction, these byte slices can +point to different data or can point to invalid memory which will cause a panic. + */ package bolt