Index: mapogcsos.c =================================================================== --- mapogcsos.c (revision 7091) +++ mapogcsos.c (working copy) @@ -64,6 +64,7 @@ void msSOSParseRequest(cgiRequestObj *request, sosParamsObj *sosparams); void msSOSFreeParamsObj(sosParamsObj *sosparams); +sosParamsObj *msSOSCreateParamsObj(); /* ** msSOSException() @@ -2474,8 +2475,12 @@ int msSOSDispatch(mapObj *map, cgiRequestObj *req) { #ifdef USE_SOS_SVR int returnvalue = MS_DONE; - sosParamsObj *paramsObj = (sosParamsObj *)calloc(1, sizeof(sosParamsObj)); + sosParamsObj *paramsObj; + //sosParamsObj *paramsObj = (sosParamsObj *)calloc(1, sizeof(sosParamsObj)); + + paramsObj = msSOSCreateParamsObj(); + msSOSParseRequest(req, paramsObj); /* SERVICE must be specified and be SOS */ @@ -2752,6 +2757,30 @@ return; } +sosParamsObj *msSOSCreateParamsObj() { + sosParamsObj *paramsObj = (sosParamsObj *)calloc(1, sizeof(sosParamsObj)); + + if (paramsObj) { + paramsObj->pszVersion=NULL; + paramsObj->pszUpdateSequence=NULL; + paramsObj->pszRequest=NULL; + paramsObj->pszOutputFormat=NULL; + paramsObj->pszSensorId=NULL; + paramsObj->pszProcedure=NULL; + paramsObj->pszOffering=NULL; + paramsObj->pszObservedProperty=NULL; + paramsObj->pszEventTime=NULL; + paramsObj->pszResult=NULL; + paramsObj->pszResponseFormat=NULL; + paramsObj->pszResultModel=NULL; + paramsObj->pszResponseMode=NULL; + paramsObj->pszSrsName=NULL; + paramsObj->pszFeatureOfInterest=NULL; + } + + return paramsObj; +} + void msSOSFreeParamsObj(sosParamsObj *sosparams) { if (sosparams) { if (sosparams->pszVersion) @@ -2770,7 +2799,7 @@ free(sosparams->pszOffering); if (sosparams->pszObservedProperty) free(sosparams->pszObservedProperty); - if (sosparams->pszEventTime); + if (sosparams->pszEventTime) free(sosparams->pszEventTime); if (sosparams->pszResult) free(sosparams->pszResult);