-rw-r--r-- | library/backend/timeconversion.cpp | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/library/backend/timeconversion.cpp b/library/backend/timeconversion.cpp index ef7762d..3c25922 100644 --- a/library/backend/timeconversion.cpp +++ b/library/backend/timeconversion.cpp | |||
@@ -133,7 +133,7 @@ QDateTime TimeConversion::fromISO8601( const QCString &s ) | |||
133 | tzset(); | 133 | tzset(); |
134 | #endif | 134 | #endif |
135 | 135 | ||
136 | struct tm *thetime = new tm; | 136 | struct tm thetime; |
137 | 137 | ||
138 | QCString str = s.copy(); | 138 | QCString str = s.copy(); |
139 | str.replace(QRegExp("-"), "" ); | 139 | str.replace(QRegExp("-"), "" ); |
@@ -152,23 +152,24 @@ QDateTime TimeConversion::fromISO8601( const QCString &s ) | |||
152 | } | 152 | } |
153 | 153 | ||
154 | // qDebug("--- parsing ISO time---"); | 154 | // qDebug("--- parsing ISO time---"); |
155 | thetime->tm_year = 100; | 155 | memset( &thetime, 0, sizeof(tm) ); |
156 | thetime->tm_mon = 0; | 156 | thetime.tm_year = 100; |
157 | thetime->tm_mday = 0; | 157 | thetime.tm_mon = 0; |
158 | thetime->tm_hour = 0; | 158 | thetime.tm_mday = 0; |
159 | thetime->tm_min = 0; | 159 | thetime.tm_hour = 0; |
160 | thetime->tm_sec = 0; | 160 | thetime.tm_min = 0; |
161 | thetime.tm_sec = 0; | ||
161 | 162 | ||
162 | // qDebug("date = %s", date.data() ); | 163 | // qDebug("date = %s", date.data() ); |
163 | 164 | ||
164 | switch( date.length() ) { | 165 | switch( date.length() ) { |
165 | case 8: | 166 | case 8: |
166 | thetime->tm_mday = date.right( 2 ).toInt(); | 167 | thetime.tm_mday = date.right( 2 ).toInt(); |
167 | case 6: | 168 | case 6: |
168 | thetime->tm_mon = date.mid( 4, 2 ).toInt() - 1; | 169 | thetime.tm_mon = date.mid( 4, 2 ).toInt() - 1; |
169 | case 4: | 170 | case 4: |
170 | thetime->tm_year = date.left( 4 ).toInt(); | 171 | thetime.tm_year = date.left( 4 ).toInt(); |
171 | thetime->tm_year -= 1900; | 172 | thetime.tm_year -= 1900; |
172 | break; | 173 | break; |
173 | default: | 174 | default: |
174 | break; | 175 | break; |
@@ -206,11 +207,11 @@ QDateTime TimeConversion::fromISO8601( const QCString &s ) | |||
206 | // get the time: | 207 | // get the time: |
207 | switch( timestr.length() ) { | 208 | switch( timestr.length() ) { |
208 | case 6: | 209 | case 6: |
209 | thetime->tm_sec = timestr.mid( 4 ).toInt(); | 210 | thetime.tm_sec = timestr.mid( 4 ).toInt(); |
210 | case 4: | 211 | case 4: |
211 | thetime->tm_min = timestr.mid( 2, 2 ).toInt(); | 212 | thetime.tm_min = timestr.mid( 2, 2 ).toInt(); |
212 | case 2: | 213 | case 2: |
213 | thetime->tm_hour = timestr.left( 2 ).toInt(); | 214 | thetime.tm_hour = timestr.left( 2 ).toInt(); |
214 | default: | 215 | default: |
215 | break; | 216 | break; |
216 | } | 217 | } |
@@ -227,10 +228,10 @@ QDateTime TimeConversion::fromISO8601( const QCString &s ) | |||
227 | // qDebug("time: %d %d %d, tzloc=%d, tzoff=%d", thetime->tm_hour, thetime->tm_min, thetime->tm_sec, | 228 | // qDebug("time: %d %d %d, tzloc=%d, tzoff=%d", thetime->tm_hour, thetime->tm_min, thetime->tm_sec, |
228 | // tzloc, tzoff ); | 229 | // tzloc, tzoff ); |
229 | 230 | ||
230 | tmp = mktime( thetime ); | 231 | tmp = mktime( &thetime ); |
231 | tmp += 60*(-tzloc + tzoff); | 232 | tmp += 60*(-tzloc + tzoff); |
232 | 233 | ||
233 | delete thetime; | 234 | |
234 | 235 | ||
235 | return fromUTC( tmp ); | 236 | return fromUTC( tmp ); |
236 | } | 237 | } |