From 3da2738e27440a3ae7c3d29c4ed83b6f6737117a Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 12 Jul 2018 09:23:38 +0100 Subject: [PATCH] Fix gcsafe error in debug, use getOrDefault instead of {} --- json_rpc/router.nim | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/json_rpc/router.nim b/json_rpc/router.nim index 1c784a8..e5a0b6a 100644 --- a/json_rpc/router.nim +++ b/json_rpc/router.nim @@ -159,8 +159,8 @@ proc tryRoute*(router: RpcRouter, data: JsonNode, fut: var Future[JsonNode]): bo ## Route to RPC, returns false if the method or params cannot be found. ## Expects json input and returns json output. let - jPath = data{methodField} - jParams = data{paramsField} + jPath = data.getOrDefault(methodField) + jParams = data.getOrDefault(paramsField) if jPath.isEmpty or jParams.isEmpty: return false @@ -232,20 +232,20 @@ macro rpc*(server: RpcRouter, path: string, body: untyped): untyped = if returnType == ident"JsonNode": # `JsonNode` results don't need conversion result.add( quote do: - proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async.} = + proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async, gcsafe.} = trap(`pathStr`): `res` = `doMain`(`paramsIdent`) ) else: result.add(quote do: - proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async.} = + proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async, gcsafe.} = trap(`pathStr`): `res` = %`doMain`(`paramsIdent`) ) else: # no return types, inline contents result.add(quote do: - proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async.} = + proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async, gcsafe.} = `setup` trap(`pathStr`): `procBody`