diff options
author | dkf <dkf@noemail.net> | 2010-02-08 13:21:41 (GMT) |
---|---|---|
committer | dkf <dkf@noemail.net> | 2010-02-08 13:21:41 (GMT) |
commit | fbca7d35e2988035c4d93ce348e1c937789225b8 (patch) | |
tree | f662b09530809cd10e7acbf85ad31ceec110dc85 /generic/tclZlib.c | |
parent | 3ac63bf003de083677896f57c343af5b1754bb0a (diff) | |
download | tcl-fbca7d35e2988035c4d93ce348e1c937789225b8.zip tcl-fbca7d35e2988035c4d93ce348e1c937789225b8.tar.gz tcl-fbca7d35e2988035c4d93ce348e1c937789225b8.tar.bz2 |
[Bug 2947783]: Ensure that result is an unshared object before appending to it.
FossilOrigin-Name: 98913ba9aad3f9f6b3d81d82422b550e97b20a54
Diffstat (limited to 'generic/tclZlib.c')
-rw-r--r-- | generic/tclZlib.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/generic/tclZlib.c b/generic/tclZlib.c index 2ae12c0..f43f704 100644 --- a/generic/tclZlib.c +++ b/generic/tclZlib.c @@ -13,7 +13,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclZlib.c,v 1.32 2009/11/18 21:59:51 nijtmans Exp $ + * RCS: @(#) $Id: tclZlib.c,v 1.33 2010/02/08 13:21:42 dkf Exp $ */ #include "tclInt.h" @@ -1316,6 +1316,15 @@ Tcl_ZlibDeflate( obj = Tcl_GetObjResult(interp); /* + * Make sure that the result is an unshared object. [Bug 2947783] + */ + + if (Tcl_IsShared(obj)) { + obj = Tcl_DuplicateObj(obj); + Tcl_SetObjResult(interp, obj); + } + + /* * Compressed format is specified by the wbits parameter. See zlib.h for * details. */ @@ -1469,6 +1478,15 @@ Tcl_ZlibInflate( obj = Tcl_GetObjResult(interp); /* + * Make sure that the result is an unshared object. [Bug 2947783] + */ + + if (Tcl_IsShared(obj)) { + obj = Tcl_DuplicateObj(obj); + Tcl_SetObjResult(interp, obj); + } + + /* * Compressed format is specified by the wbits parameter. See zlib.h for * details. */ |