fix bug in tfile

This commit is contained in:
Jeff Tao 2020-11-06 00:39:39 +00:00
parent 9bf73b64c3
commit 10e951eb2e
1 changed files with 6 additions and 16 deletions

View File

@ -26,13 +26,11 @@ static void taosCloseFile(void *p) {
} }
int tfinit() { int tfinit() {
tsFileRsetId = taosOpenRef(2000, taosCloseFile); tsFileRsetId = taosOpenRef(2000, taosCloseFile);
return tsFileRsetId; return tsFileRsetId;
} }
void tfcleanup() { void tfcleanup() {
if (tsFileRsetId >= 0) taosCloseRef(tsFileRsetId); if (tsFileRsetId >= 0) taosCloseRef(tsFileRsetId);
tsFileRsetId = -1; tsFileRsetId = -1;
} }
@ -45,17 +43,15 @@ int64_t tfopen(const char *pathname, int flags) {
return -1; return -1;
} }
int64_t rid = taosAddRef(tsFileRsetId, (void *)(long)fd); void *p = (void *)(long)fd;
if (rid < 0) { int64_t rid = taosAddRef(tsFileRsetId, p);
close(fd); if (rid < 0) close(fd);
return -1;
}
return rid; return rid;
} }
int64_t tfclose(int64_t tfd) { int64_t tfclose(int64_t tfd) {
return taosReleaseRef(tsFileRsetId, tfd); return taosRemoveRef(tsFileRsetId, tfd);
} }
ssize_t tfwrite(int64_t tfd, const void *buf, size_t count) { ssize_t tfwrite(int64_t tfd, const void *buf, size_t count) {
@ -66,10 +62,7 @@ ssize_t tfwrite(int64_t tfd, const void *buf, size_t count) {
int fd = (int)(uintptr_t)p; int fd = (int)(uintptr_t)p;
ssize_t ret = write(fd, buf, count); ssize_t ret = write(fd, buf, count);
if (ret < 0) { if (ret < 0) terrno = TAOS_SYSTEM_ERROR(errno);
terrno = TAOS_SYSTEM_ERROR(errno);
return -1;
}
taosReleaseRef(tsFileRsetId, tfd); taosReleaseRef(tsFileRsetId, tfd);
return ret; return ret;
@ -83,10 +76,7 @@ ssize_t tfread(int64_t tfd, void *buf, size_t count) {
int fd = (int)(uintptr_t)p; int fd = (int)(uintptr_t)p;
ssize_t ret = read(fd, buf, count); ssize_t ret = read(fd, buf, count);
if (ret < 0) { if (ret < 0) terrno = TAOS_SYSTEM_ERROR(errno);
terrno = TAOS_SYSTEM_ERROR(errno);
return -1;
}
taosReleaseRef(tsFileRsetId, tfd); taosReleaseRef(tsFileRsetId, tfd);
return ret; return ret;