]> git.mxchange.org Git - simgear.git/commitdiff
Convert char* to string to prevent stdup/malloc/free
authorehofman <ehofman>
Mon, 19 May 2003 15:40:11 +0000 (15:40 +0000)
committerehofman <ehofman>
Mon, 19 May 2003 15:40:11 +0000 (15:40 +0000)
simgear/timing/geocoord.h
simgear/timing/sg_time.cxx
simgear/timing/sg_time.hxx
simgear/timing/timezone.cxx
simgear/timing/timezone.h

index c01195abefe679ec87f53888afe2e6a43e8be741..ce9dc1e9a5546c07f02300fcb1149b551430b8b3 100644 (file)
@@ -69,7 +69,7 @@ public:
 
   //double getAngle(const GeoCoord& other) const;
   virtual void print() {} ; 
-  virtual char *getDescription() {return 0;};
+  virtual const char * getDescription() {return 0;};
 };
 
 typedef vector<GeoCoord*> GeoCoordVector;
index 37dc34546a1070edede77f027fe35c54a63e62ea..3f43c9a7e5c7b732d31e7aba307651655d8c7fb3 100644 (file)
@@ -40,6 +40,8 @@
 #  include <stdlib.h>
 #endif
 
+#include <string>
+
 #ifdef HAVE_SYS_TIME_H
 #  include <sys/time.h>  // for get/setitimer, gettimeofday, struct timeval
 #endif
@@ -60,7 +62,6 @@
 #include "timezone.h"
 #include "lowleveltime.h"
 
-
 #define DEGHR(x)        ((x)/15.)
 #define RADHR(x)        DEGHR(x*SGD_RADIANS_TO_DEGREES)
 
@@ -100,12 +101,12 @@ void SGTime::init( double lon, double lat,
 
         SGPath name( root );
         name.append( nearestTz->getDescription() );
-        zonename = strdup( name.c_str() );
+        zonename = name.str();
         SG_LOG( SG_EVENT, SG_INFO, "Using zonename = " << zonename );
     } else {
         SG_LOG( SG_EVENT, SG_INFO, "*** NO TIME ZONE NAME ***" );
         tzContainer = NULL;
-        zonename = NULL;
+        zonename.erase();
     }
 }
 
@@ -132,12 +133,6 @@ SGTime::~SGTime()
         tzContainer = NULL;
        delete tmp;
     }
-
-    if ( zonename != NULL ) {
-        char *tmp = zonename;
-        zonename = NULL;
-       free(tmp);
-    }
 }
 
 
@@ -299,17 +294,12 @@ void SGTime::updateLocal( double lon, double lat, const string& root ) {
     GeoCoord* nearestTz = tzContainer->getNearest(location);
     SGPath zone( root );
     zone.append ( nearestTz->getDescription() );
-    if ( zonename ) {
-        char *ptr = zonename;
-        zonename = NULL;
-        free(ptr);
-    }
-    zonename = strdup( zone.c_str() );
+    zonename = zone.str();
 
     //Avoid troubles when zone.tab hasn't got the right line endings
-    if (zonename[strlen(zonename)-1] == '\r')
+    if (zonename[zonename.size()-1] == '\r')
     {
-      zonename[strlen(zonename)-1]=0;
+      zonename[zonename.size()-1]=0;
       zone.set( zonename );
     }
 
index f2bab45aff35d83e9bae408e5a0b894475a6c0c6..fa0ab060722e789736a73dc8aa7018298ed017ae 100644 (file)
@@ -72,7 +72,7 @@ private:
     TimezoneContainer* tzContainer;
 
     // Points to the current local timezone name;
-    char *zonename;
+    string zonename;
 
     // Unix "calendar" time in seconds
     time_t cur_time;
@@ -170,7 +170,7 @@ public:
     inline time_t get_cur_time() const { return cur_time; };
 
     /** @return time zone name for your current position*/
-    inline char* get_zonename() const { return zonename; }
+    inline const char * get_zonename() const { return zonename.c_str(); }
 
     /** @return GMT in a "brokent down" tm structure */
 #if defined(_MSC_VER) || defined(__MINGW32__)
index 41c596e852f7a4f8c571426a2ab9bb26652c7fbb..d8ef91d27990f0e43d76c22878a32ecf9a1b9acd 100644 (file)
@@ -35,8 +35,8 @@
 Timezone::Timezone(float la, float lo, char* cc, char* desc) :
     GeoCoord(la, lo)
 { 
-    countryCode = strdup(cc);
-    descriptor = strdup(desc);
+    countryCode = cc;
+    descriptor = desc;
 }
 
 /* Build a timezone object from a textline in zone.tab */
@@ -50,7 +50,7 @@ Timezone::Timezone(const char *infoString) :
     char latlon[128];
     strncpy(buffer, infoString, i);
     buffer[i] = 0;
-    countryCode = strdup(buffer);
+    countryCode = buffer;
     i ++;
     int start = i;
     while (infoString[i] != '\t') {
@@ -107,7 +107,7 @@ Timezone::Timezone(const char *infoString) :
     size = i - start;
     strncpy(buffer, (&infoString[start]), size);
     buffer[size] = 0;
-    descriptor = strdup(buffer);
+    descriptor = buffer;
 }
 
 /* the copy constructor */
@@ -115,8 +115,8 @@ Timezone::Timezone(const Timezone& other)
 {
     lat = other.getLat();
     lon = other.getLon();
-    countryCode = strdup(other.countryCode);
-    descriptor = strdup(other.descriptor);
+    countryCode = other.countryCode;
+    descriptor = other.descriptor;
 }
 
 
index ce3521befaaa0b548a9dce79746eb97d55186efa..5d3035d5b8f16637662d45bb5797963e25438a29 100644 (file)
 class Timezone : public GeoCoord
 {
 private:
-  char* countryCode;
-  char* descriptor;
+  string countryCode;
+  string descriptor;
 
 public:
   Timezone() :
     GeoCoord()
     { 
-      countryCode = 0
-      descriptor = 0;
+      countryCode.erase()
+      descriptor.erase();
     };
   Timezone(float la, float lo, char* cc, char* desc);
   Timezone(const char *infoString);
   Timezone(const Timezone &other);
-  virtual ~Timezone() { delete [] countryCode; delete [] descriptor; };
+  virtual ~Timezone() { };
   
 
-  virtual void print() { printf("%s", descriptor);};
-  virtual char * getDescription() { return descriptor; };
+  virtual void print() { printf("%s", descriptor.c_str());};
+  virtual const char * getDescription() { return descriptor.c_str(); };
 };
 
 /************************************************************************