From 91bab801aad337f2353cd4a46c896dfff6714cdf Mon Sep 17 00:00:00 2001 From: Unknwon Date: Mon, 11 Jan 2016 14:34:32 +0800 Subject: #2349 try to handle []int8 case --- models/login.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'models') diff --git a/models/login.go b/models/login.go index e36171a3..dc620e1b 100644 --- a/models/login.go +++ b/models/login.go @@ -105,10 +105,21 @@ type LoginSource struct { Updated time.Time `xorm:"UPDATED"` } +// Cell2Int64 converts a xorm.Cell type to int64, +// and handles possible irregular cases. +func Cell2Int64(val xorm.Cell) int64 { + switch (*val).(type) { + case []int8: + log.Trace("Cell2Int64 ([]int8): %v", *val) + return int64((*val).([]int8)[0]) + } + return (*val).(int64) +} + func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) { switch colName { case "type": - switch LoginType((*val).(int64)) { + switch LoginType(Cell2Int64(val)) { case LOGIN_LDAP, LOGIN_DLDAP: source.Cfg = new(LDAPConfig) case LOGIN_SMTP: -- cgit v1.2.3