[ https://issues.apache.org/jira/browse/THRIFT-3377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15123029#comment-15123029 ]
Roshan George commented on THRIFT-3377: --------------------------------------- Thanks for merging, Jens! > Deep copy is actually shallow when using typedef members > -------------------------------------------------------- > > Key: THRIFT-3377 > URL: https://issues.apache.org/jira/browse/THRIFT-3377 > Project: Thrift > Issue Type: Bug > Components: Java - Compiler > Affects Versions: 0.9.2 > Reporter: Vincent Dumont > Assignee: Roshan George > Fix For: 1.0 > > > Consider the following structures: > {code:title=thrift|borderStyle=solid} > typedef set<i32> sset; > struct Test { > 1: set<i32> myset; > } > struct Test2 { > 1: sset myset; > } > {code} > The generated code for Test's copy constructor looks fine, it deep copies the > set. However, Test2, which should be equivalent, actually does not deep-copy > the set and instead simply does a shallow assignment like if it was a POD > type. > {code:title=Test.java -- deep|borderStyle=solid} > /** > * Performs a deep copy on <i>other</i>. > */ > public Test(Test other) { > if (other.isSetMyset()) { > Set<Integer> __this__myset = new HashSet<Integer>(other.myset); > this.myset = __this__myset; > } > } > {code} > VS > {code:title=Test2.java -- shallow..?|borderStyle=solid} > /** > * Performs a deep copy on <i>other</i>. > */ > public Test2(Test2 other) { > if (other.isSetMyset()) { > this.myset = other.myset; > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)