diff --git a/src/authdb.cpp b/src/authdb.cpp index bad205cbe2879e1ea9e7b7f027cfa5c6f1bf8d03..88b5183aa8d7e709a0cf33f3b80f21658e7d856c 100644 --- a/src/authdb.cpp +++ b/src/authdb.cpp @@ -424,19 +424,16 @@ VALUEFOUND: bool getRecord(authdb::AuthBackend &backend,AuthData &rec,int type){ bool found=false; int rd=sizeof(authdb::AuthHeader),end=backend.end(); - AuthData *curec=&rec; while(rd cur(new AuthData::Record()); backend.setPos(rd); - backend.read((unsigned char*)&cur,sizeof(AuthData::Record)); - rd=backend.getPos()+cur.datasize; - if(uuid_compare(cur.uuid,rec.Data->uuid) == 0 && cur.type == type){ - cur.data=new char[cur.datasize]; - backend.read((unsigned char*)cur.data,cur.datasize); - rec.append(cur); - delete[] cur.data; + backend.read(reinterpret_cast(cur.get()),sizeof(AuthData::Record)); + rd=backend.getPos()+cur->datasize; + if(uuid_compare(cur->uuid,rec.Data->uuid) == 0 && cur->type == type){ + cur->data=new char[cur->datasize]; + backend.read((unsigned char*)cur->data,cur->datasize); + rec.append(*cur); found=true; } } diff --git a/src/user.cpp b/src/user.cpp index 7ab9f50bf13f25f5f259e8a41d27b33fbcbc8af1..9e15061d8be1bb114d599c76ca58efba4fb99d4e 100644 --- a/src/user.cpp +++ b/src/user.cpp @@ -167,9 +167,9 @@ void authdb::User::info(AuthBackend &backend, class UserData& dat, size_t &pos){ throw AuthBackendError("user info uid required!"); while(pos cur(new AuthData::Record); backend.setPos(pos); - backend.read((unsigned char*)cur,sizeof(AuthData::Record)); + backend.read(reinterpret_cast(cur.get()),sizeof(AuthData::Record)); pos=backend.getPos()+cur->datasize; if(cur->type == UserData && uuid_compare(dat.uid,cur->uuid) == 0 && strcmp(cur->fieldname,"username")==0 @@ -192,7 +192,6 @@ void authdb::User::info(AuthBackend &backend, class UserData& dat, size_t &pos){ dat.avatar=dat.Data; } } - delete cur; } }