summaryrefslogtreecommitdiff
path: root/internal/router
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2023-12-12 15:44:54 +0100
committerLibravatar GitHub <noreply@github.com>2023-12-12 14:44:54 +0000
commitd0bb8f09738d23a79688cf5e69730b1d81b37b08 (patch)
treebe02845269155c99d6a50165bacaa8cb2d9a3692 /internal/router
parent[bugfix] poll vote count fixes (#2444) (diff)
downloadgotosocial-d0bb8f09738d23a79688cf5e69730b1d81b37b08.tar.xz
[bugfix] Let templates deref pointers, as a treat (#2448)v0.13.0-rc2
Diffstat (limited to 'internal/router')
-rw-r--r--internal/router/template.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/internal/router/template.go b/internal/router/template.go
index d5e36d6f2..d1f6f297c 100644
--- a/internal/router/template.go
+++ b/internal/router/template.go
@@ -22,6 +22,7 @@ import (
"html/template"
"os"
"path/filepath"
+ "reflect"
"strings"
"time"
"unsafe"
@@ -180,6 +181,19 @@ func isNil(i interface{}) bool {
return (*eface)(unsafe.Pointer(&i)).data == nil
}
+// deref returns the dereferenced value of
+// its input. To ensure you don't pass nil
+// pointers into this func, use isNil first.
+func deref(i any) any {
+ vOf := reflect.ValueOf(i)
+ if vOf.Kind() != reflect.Pointer {
+ // Not a pointer.
+ return i
+ }
+
+ return vOf.Elem()
+}
+
func LoadTemplateFunctions(engine *gin.Engine) {
engine.SetFuncMap(template.FuncMap{
"escape": escape,
@@ -194,5 +208,6 @@ func LoadTemplateFunctions(engine *gin.Engine) {
"acctInstance": acctInstance,
"increment": increment,
"isNil": isNil,
+ "deref": deref,
})
}