From 26c339b4bdde61c440893de6a5b222281a352272 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 4 Jul 2009 23:09:50 +0000 Subject: [PATCH] use sscanf with the correct type conversion and not atoi/atol to load nframes_t and nframes64_t in locations and playhead position. NOTE: other similar bugs may exist elsewhere git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5324 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.cc | 3 ++- libs/ardour/location.cc | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 0865854cf9..55c1b1a7eb 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2418,7 +2418,8 @@ Editor::set_state (const XMLNode& node) move (x, y); if (session && (prop = node.property ("playhead"))) { - nframes64_t pos = atol (prop->value().c_str()); + nframes64_t pos; + sscanf (prop->value().c_str(), "%" PRIi64, &pos); playhead_cursor->set_position (pos); } else { playhead_cursor->set_position (0); diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index 103074511c..6bd10ca27a 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -375,15 +375,15 @@ Location::set_state (const XMLNode& node) /* can't use set_start() here, because _end may make the value of _start illegal. */ - - _start = atoi (prop->value().c_str()); + + sscanf (prop->value().c_str(), "%" PRIu32, &_start); if ((prop = node.property ("end")) == 0) { error << _("XML node for Location has no end information") << endmsg; return -1; } - _end = atoi (prop->value().c_str()); + sscanf (prop->value().c_str(), "%" PRIu32, &_end); if ((prop = node.property ("flags")) == 0) { error << _("XML node for Location has no flags information") << endmsg; @@ -403,19 +403,19 @@ Location::set_state (const XMLNode& node) cd_node = *cd_iter; if (cd_node->name() != "CD-Info") { - continue; + continue; } if ((prop = cd_node->property ("name")) != 0) { - cd_name = prop->value(); + cd_name = prop->value(); } else { - throw failed_constructor (); + throw failed_constructor (); } if ((prop = cd_node->property ("value")) != 0) { - cd_value = prop->value(); + cd_value = prop->value(); } else { - throw failed_constructor (); + throw failed_constructor (); } -- 2.30.2