From 1acdf8b3ea53603a07a47609a4dad9b2ec30e117 Mon Sep 17 00:00:00 2001 From: Jonathan Friedman Date: Tue, 19 Jun 2018 11:42:09 -0400 Subject: [PATCH] Fix Race condition in tablename Fixes https://github.com/jinzhu/gorm/issues/1407 --- model_struct.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/model_struct.go b/model_struct.go index f571e2e8..19d54d89 100644 --- a/model_struct.go +++ b/model_struct.go @@ -17,6 +17,8 @@ var DefaultTableNameHandler = func(db *DB, defaultTableName string) string { return defaultTableName } +var mutex sync.Mutex + type safeModelStructsMap struct { m map[reflect.Type]*ModelStruct l *sync.RWMutex @@ -50,6 +52,9 @@ type ModelStruct struct { // TableName get model's table name func (s *ModelStruct) TableName(db *DB) string { + mutex.Lock() + defer mutex.Unlock() + if s.defaultTableName == "" && db != nil && s.ModelType != nil { // Set default table name if tabler, ok := reflect.New(s.ModelType).Interface().(tabler); ok {