David Smart / NWSWeather
Revision:
13:a9ac9dde4f7f
Parent:
12:d70de07ca914
Child:
14:bcc80874e824
diff -r d70de07ca914 -r a9ac9dde4f7f NWSWeather.cpp
--- a/NWSWeather.cpp	Thu Nov 26 18:58:29 2015 +0000
+++ b/NWSWeather.cpp	Mon Nov 30 02:32:56 2015 +0000
@@ -16,7 +16,13 @@
 //
 #include "NWSWeather.h"
 
-//#define DEBUG "NWS "
+#include "Utility.h"            // private memory manager
+#ifndef UTILITY_H
+#define swMalloc malloc         // use the standard 
+#define swFree free
+#endif
+
+#define DEBUG "NWS "
 // ...
 // INFO("Stuff to show %d", var); // new-line is automatically appended
 //
@@ -68,7 +74,7 @@
 
 #define WeatherItemCount (sizeof(WeatherData)/sizeof(WeatherData[0]))
 
-NWSWeather::NWSWeather(const char * baseURL)
+NWSWeather::NWSWeather(const char * baseURL) : m_baseurl(0)
 {
     setAlternateURL(baseURL);
 }
@@ -83,12 +89,12 @@
     int n = strlen(baseURL)+1;
     
     if (m_baseurl)
-        free(m_baseurl);
-    m_baseurl = (char *)malloc(n);
+        swFree(m_baseurl);
+    m_baseurl = (char *)swMalloc(n);
     if (m_baseurl)
         strncpy(m_baseurl, baseURL, n);
     else {
-        ERR("failed to malloc(%d)", n);
+        ERR("failed to swMalloc(%d)", n);
         return nomemory;
     }
     ClearWeatherRecords();
@@ -105,15 +111,15 @@
     HTTPClient http;
     NWSReturnCode_T retCode = nomemory;
     char *url = NULL;
-    char *message = (char *)malloc(responseSize);
+    char *message = (char *)swMalloc(responseSize);
     
     INFO("get(%s)", site);
     if (!message)
-        ERR("failed to malloc(%d)", responseSize);
+        ERR("failed to swMalloc(%d)", responseSize);
     while (message) {
         int n = strlen(m_baseurl) + strlen(site) + 5;
         
-        url = (char *)malloc(n);
+        url = (char *)swMalloc(n);
         if (url) {
             strcpy(url, m_baseurl);
             strcat(url, site);
@@ -140,16 +146,16 @@
                 break;
             }
         } else {
-            ERR("failed to malloc(%d)", n);
+            ERR("failed to swMalloc(%d)", n);
             retCode = nomemory;
             break;
         }
     } // while(...) but configured with break for only 1 pass.
     INFO("  ret is %d", retCode);
     if (url)
-        free(url);
+        swFree(url);
     if (message)
-        free(message);
+        swFree(message);
     INFO("  mem freed.");
     return retCode;
 }
@@ -229,7 +235,7 @@
                 break;
             case isString:
                 if (WeatherData[i].value.sValue) {
-                    free(WeatherData[i].value.sValue);
+                    swFree(WeatherData[i].value.sValue);
                     WeatherData[i].value.sValue = NULL;
                 }
                 WeatherData[i].updated = false;
@@ -297,14 +303,16 @@
                                 break;
                             case isString:
                                 if (WeatherData[i].value.sValue)
-                                    free(WeatherData[i].value.sValue);
+                                    swFree(WeatherData[i].value.sValue);
                                 n = strlen(p2)+1;
-                                WeatherData[i].value.sValue = (char *)malloc(n);
+                                INFO("  pre- swMalloc");
+                                WeatherData[i].value.sValue = (char *)swMalloc(n);
+                                INFO("  post-swMalloc");
                                 if (WeatherData[i].value.sValue) {
                                     strcpy(WeatherData[i].value.sValue, p2);
                                     WeatherData[i].updated = true;
                                 } else {
-                                    ERR("failed to malloc(%d)", n);
+                                    ERR("failed to swMalloc(%d)", n);
                                     break;
                                 }
                                 break;