summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-17 14:33:09 -0500
committerJeff Carr <[email protected]>2025-10-17 14:33:09 -0500
commit6fb037663859bc50ac1d5bac1fdbfc722b1ab23d (patch)
treed2df0eb57d8e62be685731bdb60e27924132d911
parent923ab262f624bd50c543062c4f3f2db9e577d5fb (diff)
still panics (maybe?)
-rw-r--r--generateAppend.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/generateAppend.go b/generateAppend.go
index d011ea9..fd7bdfe 100644
--- a/generateAppend.go
+++ b/generateAppend.go
@@ -19,12 +19,16 @@ func (msg *MsgName) simpleAppend(w io.Writer, FRUIT, APPLES, APPLE string) strin
// log.Printf("\t\t(x %s) APPEND(%s)\n", FRUIT, APPLE)
// append -- no check at all
fmt.Fprintln(w, "// a Append() shortcut (that does Clone() with a mutex) notsure if it really works")
+ fmt.Fprintln(w, "// doesn't allow nil")
fmt.Fprintln(w, funcdef, "{")
fmt.Fprintln(w, " "+LOCK+".Lock()")
fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
fmt.Fprintln(w, "")
fmt.Fprintln(w, " // append was doing Clone() and that was poorly named.")
fmt.Fprintln(w, " // now autogenpb makes Clone() for that")
+ fmt.Fprintln(w, " if y == nil {")
+ fmt.Fprintln(w, " return")
+ fmt.Fprintln(w, " }")
fmt.Fprintln(w, " // z := proto.Clone(y).(*"+APPLE+")")
fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", y)")
fmt.Fprintln(w, "")
@@ -47,6 +51,9 @@ func (msg *MsgName) simpleAppendBy(w io.Writer, STRUCT, FUNCNAME, STRUCTVAR, VAR
fmt.Fprintln(w, " "+LOCK+".Lock()")
fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " if y == nil {")
+ fmt.Fprintln(w, " return false")
+ fmt.Fprintln(w, " }")
fmt.Fprintln(w, " for _, p := range x."+STRUCTVAR+" {")
fmt.Fprintln(w, " if p."+VARNAME+" == y."+VARNAME+" {")
fmt.Fprintln(w, " return false")
@@ -77,6 +84,9 @@ func (msg *MsgName) simpleClone(w io.Writer, FRUIT, APPLES, APPLE string) string
fmt.Fprintln(w, " "+LOCK+".Lock()")
fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " if y == nil {")
+ fmt.Fprintln(w, " return y")
+ fmt.Fprintln(w, " }")
fmt.Fprintln(w, " z := proto.Clone(y).(*"+APPLE+")")
fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", z)")
fmt.Fprintln(w, "")
@@ -99,6 +109,9 @@ func (msg *MsgName) simpleCloneBy(w io.Writer, STRUCT, FUNCNAME, STRUCTVAR, VARN
fmt.Fprintln(w, " "+LOCK+".Lock()")
fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " if y == nil {")
+ fmt.Fprintln(w, " return false")
+ fmt.Fprintln(w, " }")
fmt.Fprintln(w, " for _, p := range x."+STRUCTVAR+" {")
fmt.Fprintln(w, " if p."+VARNAME+" == y."+VARNAME+" {")
fmt.Fprintln(w, " return false")