Mercurial > hg > truffle
comparison src/share/vm/runtime/os.cpp @ 2469:677234770800
7017193: Small memory leak in get_stack_bounds os::create_stack_guard_pages
Summary: getline() returns -1 but still allocate memory for str
Reviewed-by: dcubed, coleenp
author | dsamersoff |
---|---|
date | Wed, 30 Mar 2011 19:38:07 +0400 |
parents | fc416c2556ec |
children | 0654ee04b214 bf6481e5f96d |
comparison
equal
deleted
inserted
replaced
2393:74e790c48cd4 | 2469:677234770800 |
---|---|
1289 result = true; | 1289 result = true; |
1290 } | 1290 } |
1291 } | 1291 } |
1292 return result; | 1292 return result; |
1293 } | 1293 } |
1294 | |
1295 // Read file line by line, if line is longer than bsize, | |
1296 // skip rest of line. | |
1297 int os::get_line_chars(int fd, char* buf, const size_t bsize){ | |
1298 size_t sz, i = 0; | |
1299 | |
1300 // read until EOF, EOL or buf is full | |
1301 while ((sz = (int) read(fd, &buf[i], 1)) == 1 && i < (bsize-1) && buf[i] != '\n') { | |
1302 ++i; | |
1303 } | |
1304 | |
1305 if (buf[i] == '\n') { | |
1306 // EOL reached so ignore EOL character and return | |
1307 | |
1308 buf[i] = 0; | |
1309 return (int) i; | |
1310 } | |
1311 | |
1312 buf[i+1] = 0; | |
1313 | |
1314 if (sz != 1) { | |
1315 // EOF reached. if we read chars before EOF return them and | |
1316 // return EOF on next call otherwise return EOF | |
1317 | |
1318 return (i == 0) ? -1 : (int) i; | |
1319 } | |
1320 | |
1321 // line is longer than size of buf, skip to EOL | |
1322 int ch; | |
1323 while (read(fd, &ch, 1) == 1 && ch != '\n') { | |
1324 // Do nothing | |
1325 } | |
1326 | |
1327 // return initial part of line that fits in buf. | |
1328 // If we reached EOF, it will be returned on next call. | |
1329 | |
1330 return (int) i; | |
1331 } |