From f44a2d1318b3467e36761b298e2be486bb4b8540 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 18 Sep 2012 19:53:38 +0200 Subject: [PATCH] avoid leak and unnecessary usage of onlineresource in template output --- maptemplate.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/maptemplate.c b/maptemplate.c index 9423874355..3039352b0e 100644 --- a/maptemplate.c +++ b/maptemplate.c @@ -3570,13 +3570,16 @@ static char *processLine(mapservObj *mapserv, char *instr, FILE *stream, int mod outstr = msReplaceSubstring(outstr, "[map]", repstr); } + if(strstr(outstr,"[mapserv_onlineresource]")) { + char *ol; #if defined(USE_WMS_SVR) || defined (USE_WFS_SVR) || defined (USE_WCS_SVR) || defined(USE_SOS_SVR) || defined(USE_WMS_LYR) || defined(USE_WFS_LYR) - outstr = msReplaceSubstring(outstr, "[mapserv_onlineresource]", - msOWSGetOnlineResource(mapserv->map, "O", "onlineresource", mapserv->request)); + ol = msOWSGetOnlineResource(mapserv->map, "O", "onlineresource", mapserv->request); #else - outstr = msReplaceSubstring(outstr, "[mapserv_onlineresource]", - msBuildOnlineResource(mapserv->map, mapserv->request)); + ol = msBuildOnlineResource(mapserv->map, mapserv->request); #endif + outstr = msReplaceSubstring(outstr, "[mapserv_onlineresource]",ol); + msFree(ol); + } if(getenv("HTTP_HOST")) { snprintf(repstr, PROCESSLINE_BUFLEN, "%s", getenv("HTTP_HOST"));