| 1467 | } |
| 1468 | |
| 1469 | S32 String::StrFormat::append(const char * str, S32 len) |
| 1470 | { |
| 1471 | if (_dynamicBuffer == NULL) |
| 1472 | { |
| 1473 | if (_len+len >= 0 && _len+len < sizeof(_fixedBuffer)) |
| 1474 | { |
| 1475 | dMemcpy(_fixedBuffer + _len, str, len); |
| 1476 | _len += len; |
| 1477 | _fixedBuffer[_len] = '\0'; |
| 1478 | return _len; |
| 1479 | } |
| 1480 | |
| 1481 | _dynamicSize = sizeof(_fixedBuffer) * 2; |
| 1482 | _dynamicBuffer = (char*)dMalloc(_dynamicSize); |
| 1483 | dMemcpy(_dynamicBuffer, _fixedBuffer, _len + 1); |
| 1484 | } |
| 1485 | |
| 1486 | S32 newSize = _dynamicSize; |
| 1487 | while (newSize < _len+len) |
| 1488 | newSize *= 2; |
| 1489 | if (newSize != _dynamicSize) |
| 1490 | _dynamicBuffer = (char*) dRealloc(_dynamicBuffer, newSize); |
| 1491 | _dynamicSize = newSize; |
| 1492 | dMemcpy(_dynamicBuffer + _len, str, len); |
| 1493 | _len += len; |
| 1494 | _dynamicBuffer[_len] = '\0'; |
| 1495 | return _len; |
| 1496 | } |
| 1497 | |
| 1498 | S32 String::StrFormat::append(const char * str) |
| 1499 | { |