replaced std::isdigit with is_digit, to avoid asserts on windows and locale dependency. Fixes #484
This commit is contained in:
parent
25dd5c86b9
commit
afd04635e9
|
@ -80,17 +80,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/config.hpp"
|
#include "libtorrent/config.hpp"
|
||||||
|
|
||||||
#include "libtorrent/assert.hpp"
|
#include "libtorrent/assert.hpp"
|
||||||
|
#include "libtorrent/escape_string.hpp"
|
||||||
#if defined(_MSC_VER)
|
|
||||||
namespace std
|
|
||||||
{
|
|
||||||
using ::isdigit;
|
|
||||||
using ::atoi;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define for if (false) {} else for
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
namespace libtorrent
|
namespace libtorrent
|
||||||
{
|
{
|
||||||
|
@ -341,7 +331,7 @@ namespace libtorrent
|
||||||
// ----------------------------------------------
|
// ----------------------------------------------
|
||||||
// string
|
// string
|
||||||
default:
|
default:
|
||||||
if (isdigit((unsigned char)*in))
|
if (is_digit((unsigned char)*in))
|
||||||
{
|
{
|
||||||
std::string len_s = read_until(in, end, ':', err);
|
std::string len_s = read_until(in, end, ':', err);
|
||||||
if (err)
|
if (err)
|
||||||
|
|
|
@ -42,7 +42,9 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
namespace libtorrent
|
namespace libtorrent
|
||||||
{
|
{
|
||||||
boost::array<char, 3 + std::numeric_limits<size_type>::digits10> to_string(size_type n);
|
boost::array<char, 3 + std::numeric_limits<size_type>::digits10> TORRENT_EXPORT to_string(size_type n);
|
||||||
|
bool TORRENT_EXPORT is_digit(char c);
|
||||||
|
bool TORRENT_EXPORT isprint(char c);
|
||||||
|
|
||||||
std::string TORRENT_EXPORT unescape_string(std::string const& s);
|
std::string TORRENT_EXPORT unescape_string(std::string const& s);
|
||||||
std::string TORRENT_EXPORT escape_string(const char* str, int len);
|
std::string TORRENT_EXPORT escape_string(const char* str, int len);
|
||||||
|
|
|
@ -42,6 +42,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "libtorrent/config.hpp"
|
#include "libtorrent/config.hpp"
|
||||||
#include "libtorrent/assert.hpp"
|
#include "libtorrent/assert.hpp"
|
||||||
|
#include "libtorrent/escape_string.hpp"
|
||||||
|
|
||||||
namespace libtorrent
|
namespace libtorrent
|
||||||
{
|
{
|
||||||
|
@ -168,8 +169,6 @@ namespace libtorrent
|
||||||
|
|
||||||
inline std::istream& operator>>(std::istream& is, big_number& peer)
|
inline std::istream& operator>>(std::istream& is, big_number& peer)
|
||||||
{
|
{
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
for (big_number::iterator i = peer.begin();
|
for (big_number::iterator i = peer.begin();
|
||||||
i != peer.end(); ++i)
|
i != peer.end(); ++i)
|
||||||
{
|
{
|
||||||
|
@ -182,11 +181,11 @@ namespace libtorrent
|
||||||
|| ((c[1] < '0' || c[1] > '9') && (c[1] < 'a' || c[1] > 'f'))
|
|| ((c[1] < '0' || c[1] > '9') && (c[1] < 'a' || c[1] > 'f'))
|
||||||
|| is.fail())
|
|| is.fail())
|
||||||
{
|
{
|
||||||
is.setstate(ios_base::failbit);
|
is.setstate(std::ios_base::failbit);
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
*i = ((isdigit(c[0])?c[0]-'0':c[0]-'a'+10) << 4)
|
*i = ((is_digit(c[0])?c[0]-'0':c[0]-'a'+10) << 4)
|
||||||
+ (isdigit(c[1])?c[1]-'0':c[1]-'a'+10);
|
+ (is_digit(c[1])?c[1]-'0':c[1]-'a'+10);
|
||||||
}
|
}
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,16 @@ namespace libtorrent
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_digit(char c)
|
||||||
|
{
|
||||||
|
return c >= '0' && c <= '9';
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isprint(char c)
|
||||||
|
{
|
||||||
|
return c >= 32 && c < 127;
|
||||||
|
}
|
||||||
|
|
||||||
std::string unescape_string(std::string const& s)
|
std::string unescape_string(std::string const& s)
|
||||||
{
|
{
|
||||||
std::string ret;
|
std::string ret;
|
||||||
|
|
|
@ -48,28 +48,19 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "libtorrent/identify_client.hpp"
|
#include "libtorrent/identify_client.hpp"
|
||||||
#include "libtorrent/fingerprint.hpp"
|
#include "libtorrent/fingerprint.hpp"
|
||||||
|
#include "libtorrent/escape_string.hpp"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
using namespace libtorrent;
|
using namespace libtorrent;
|
||||||
|
|
||||||
bool is_digit(char c)
|
|
||||||
{
|
|
||||||
return c >= '0' && c <= '9';
|
|
||||||
}
|
|
||||||
|
|
||||||
int decode_digit(char c)
|
int decode_digit(char c)
|
||||||
{
|
{
|
||||||
if (is_digit(c)) return c - '0';
|
if (is_digit(c)) return c - '0';
|
||||||
return unsigned(c) - 'A' + 10;
|
return unsigned(c) - 'A' + 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isprint(char c)
|
|
||||||
{
|
|
||||||
return c >= 32 && c < 127;
|
|
||||||
}
|
|
||||||
|
|
||||||
// takes a peer id and returns a valid boost::optional
|
// takes a peer id and returns a valid boost::optional
|
||||||
// object if the peer id matched the azureus style encoding
|
// object if the peer id matched the azureus style encoding
|
||||||
// the returned fingerprint contains information about the
|
// the returned fingerprint contains information about the
|
||||||
|
|
|
@ -31,6 +31,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libtorrent/lazy_entry.hpp"
|
#include "libtorrent/lazy_entry.hpp"
|
||||||
|
#include "libtorrent/escape_string.hpp"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
@ -58,8 +59,7 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
while (start < end && *start != delimiter)
|
while (start < end && *start != delimiter)
|
||||||
{
|
{
|
||||||
using namespace std;
|
if (!is_digit(*start)) { return 0; }
|
||||||
if (!isdigit(*start)) { return 0; }
|
|
||||||
val *= 10;
|
val *= 10;
|
||||||
val += *start - '0';
|
val += *start - '0';
|
||||||
++start;
|
++start;
|
||||||
|
@ -154,8 +154,7 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
using namespace std;
|
if (!is_digit(t)) return fail_bdecode(ret);
|
||||||
if (!isdigit(t)) return fail_bdecode(ret);
|
|
||||||
|
|
||||||
boost::int64_t len = t - '0';
|
boost::int64_t len = t - '0';
|
||||||
start = parse_int(start, end, ':', len);
|
start = parse_int(start, end, ':', len);
|
||||||
|
|
Loading…
Reference in New Issue