Changeset - d56b1627f77a
[Not reviewed]
Merge
0 1 0
vitalyster - 11 years ago 2014-09-04 17:01:21
vitalyster@gmail.com
Merge pull request #53 from drJeckyll/master

Skype: don't crash backend on empty avatar
1 file changed with 7 insertions and 3 deletions:
0 comments (0 inline, 0 general)
backends/skype/skypedb.cpp
Show inline comments
 
@@ -83,27 +83,31 @@ bool getAvatar(const std::string &db_path, const std::string &name, std::string
 
	if (sqlite3_open(db_path.c_str(), &db)) {
 
		sqlite3_close(db);
 
		LOG4CXX_ERROR(logger, "Can't open database");
 
	}
 
	else {
 
		sqlite3_stmt *stmt;
 
		PREP_STMT(stmt, "SELECT avatar_image FROM Contacts WHERE skypename=?");
 
		if (stmt) {
 
			BEGIN(stmt);
 
			BIND_STR(stmt, name);
 
			if(sqlite3_step(stmt) == SQLITE_ROW) {
 
				int size = sqlite3_column_bytes(stmt, 0);
 
				const void *data = sqlite3_column_blob(stmt, 0);
 
				photo = std::string((const char *)data + 1, size - 1);
 
				ret = true;
 
				if (size > 0) {
 
				    const void *data = sqlite3_column_blob(stmt, 0);
 
				    photo = std::string((const char *)data + 1, size - 1);
 
				    ret = true;
 
				} else {
 
				    ret = false;
 
				}
 
			}
 
			else {
 
				LOG4CXX_ERROR(logger, (sqlite3_errmsg(db) == NULL ? "" : sqlite3_errmsg(db)));
 
			}
 

	
 
			int ret;
 
			while((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
 
			}
 
			FINALIZE_STMT(stmt);
 
		}
 
		else {
 
			LOG4CXX_ERROR(logger, "Can't create prepared statement");
0 comments (0 inline, 0 general)