summaryrefslogtreecommitdiff
path: root/src/MetalinkParserStateV4Impl.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-11-12 01:06:52 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-11-12 01:06:52 +0900
commit2f4393d17c7120912ad7b2b820b46124010a5a5e (patch)
tree78c0e632175fc4c9b61d08c62b46a905cb4c853d /src/MetalinkParserStateV4Impl.cc
parent226480ad605cb9f7c4b5dbb0167f3fd67c8672ce (diff)
Rewritten parse*Int
Diffstat (limited to 'src/MetalinkParserStateV4Impl.cc')
-rw-r--r--src/MetalinkParserStateV4Impl.cc16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/MetalinkParserStateV4Impl.cc b/src/MetalinkParserStateV4Impl.cc
index 7a22b98e..2ba07297 100644
--- a/src/MetalinkParserStateV4Impl.cc
+++ b/src/MetalinkParserStateV4Impl.cc
@@ -119,7 +119,7 @@ void FileMetalinkParserStateV4::beginElement
priority = MetalinkResource::getLowestPriority();
} else {
if(util::parseIntNoThrow
- (priority, (*itr).value, (*itr).value+(*itr).valueLength)) {
+ (priority, std::string((*itr).value, (*itr).valueLength))) {
if(priority < 1 || MetalinkResource::getLowestPriority() < priority) {
psm->logError("metaurl@priority is out of range");
return;
@@ -163,7 +163,7 @@ void FileMetalinkParserStateV4::beginElement
priority = MetalinkResource::getLowestPriority();
} else {
if(util::parseIntNoThrow
- (priority, (*itr).value, (*itr).value+(*itr).valueLength)) {
+ (priority, std::string((*itr).value, (*itr).valueLength))) {
if(priority < 1 || MetalinkResource::getLowestPriority() < priority) {
psm->logError("url@priority is out of range");
return;
@@ -192,16 +192,15 @@ void FileMetalinkParserStateV4::beginElement
}
} else if(strcmp(localname, "pieces") == 0) {
psm->setPiecesStateV4();
- int32_t length;
+ uint32_t length;
{
std::vector<XmlAttr>::const_iterator itr =
findAttr(attrs, "length", METALINK4_NAMESPACE_URI);
if(itr == attrs.end() || (*itr).valueLength == 0) {
psm->logError("Missing pieces@length");
return;
- } else if(!util::parseIntNoThrow
- (length, (*itr).value, (*itr).value+(*itr).valueLength) ||
- length < 0) {
+ } else if(!util::parseUIntNoThrow
+ (length, std::string((*itr).value, (*itr).valueLength))) {
psm->logError("Bad pieces@length");
return;
}
@@ -254,9 +253,8 @@ void SizeMetalinkParserStateV4::endElement
const char* nsUri,
const std::string& characters)
{
- int64_t size;
- if(util::parseLLIntNoThrow(size, characters.begin(), characters.end()) &&
- size >= 0) {
+ uint64_t size;
+ if(util::parseULLIntNoThrow(size, characters)) {
psm->setFileLengthOfEntry(size);
} else {
psm->cancelEntryTransaction();