@@ -58,6 +58,7 @@ DEALINGS IN THE SOFTWARE.
5858
5959#include < algorithm>
6060#include < array>
61+ #include < cassert>
6162#include < cstddef>
6263#include < cstdint>
6364#include < cstring>
@@ -129,6 +130,8 @@ namespace osmium {
129130 }
130131
131132 void add (const char * string, std::size_t size) {
133+ assert (string);
134+
132135 if (m_table.empty ()) {
133136 m_table.resize (entry_size * number_of_entries);
134137 }
@@ -260,8 +263,10 @@ namespace osmium {
260263 }
261264
262265 const char * decode_string (const char ** dataptr, const char * const end) {
266+ assert (*dataptr != end);
267+
263268 if (**dataptr == 0x00 ) { // get inline string
264- (*dataptr)++ ;
269+ ++ (*dataptr);
265270 if (*dataptr == end) {
266271 throw o5m_error{" string format error" };
267272 }
@@ -273,6 +278,8 @@ namespace osmium {
273278 }
274279
275280 std::pair<osmium::user_id_type, const char *> decode_user (const char ** dataptr, const char * const end) {
281+ assert (*dataptr != end);
282+
276283 const bool update_pointer = (**dataptr == 0x00 );
277284 const char * data = decode_string (dataptr, end);
278285 const char * start = data;
@@ -367,7 +374,7 @@ namespace osmium {
367374 object.set_uid (uid_user.first );
368375 user = uid_user.second ;
369376 } else {
370- object.set_uid (user_id_type ( 0 ) );
377+ object.set_uid (user_id_type{ 0 } );
371378 }
372379 }
373380 }
@@ -436,6 +443,8 @@ namespace osmium {
436443 }
437444
438445 std::pair<osmium::item_type, const char *> decode_role (const char ** dataptr, const char * const end) {
446+ assert (*dataptr != end);
447+
439448 const bool update_pointer = (**dataptr == 0x00 );
440449 const char * data = decode_string (dataptr, end);
441450 const char * start = data;
0 commit comments