char* line[256]; // An array of 256 pointers, sizeof(line) == 2048
####
char line[256]; // An array of 256 chars, sizeof(line) == 256
####
newSVpv(line, sizeof(line)) // length($line) == 2048 (or 256)
####
newSVpv(line, strlen(line)) // length($line) == 3
-or-
newSVpv(line, 0) // length($line) == 3
####
char* line = NULL;
ssize_t line_size;
while (1) {
SV* line_sv;
ssize_t len = getline(&line, &line_size, fh);
if (len < 0)
last;
line_sv = newSVpvn(line, len);
...
}
if (line)
free(line);
####
while (1) {
// Actually allocates at least 256.
SV* line_sv = newSV(255);
// We know line_sv has a string buffer, so we can use SvPVX.
char* line = SvPVX(line_sv);
if (!fgets(line, 256, fh)) {
break;
}
SvCUR_set(line_sv, strlen(line));
SvPOK_on(line_sv);
...
// The callback may have changed line_sv,
// so line might no longer be valid.
line = SvPVbyte_nolen(line_sv);
printf("c orig: %sc new: %s", line, modified_line);
...
}