--- a/c_bz.c 2021-01-18 09:38:53.000000000 -0700
+++ b/c_bz.c 2021-01-22 11:19:42.381493924 -0700
@@ -110,7 +110,7 @@ value mlbz_readopen(value small, value u
{
int bzerror ;
int c_small = 0 ;
- char *c_unused = NULL ;
+ unsigned char *c_unused = NULL ;
int c_nunused = 0;
FILE * c_chan ;
BZFILE * bz_chan ;
@@ -118,7 +118,7 @@ value mlbz_readopen(value small, value u
if(Is_block(small))
c_small = Bool_val(Field(small, 0)) ;
if(Is_block(unused)){
- c_unused = String_val(Field(unused, 0)) ;
+ c_unused = Bytes_val(Field(unused, 0)) ;
c_nunused = string_length(Field(unused, 0));
}
c_chan = stream_of_channel(chan, "rb") ;
@@ -131,7 +131,7 @@ value mlbz_read(value chan, value buf, v
{
int res ;
int bzerror ;
- char *c_buf ;
+ unsigned char *c_buf ;
int c_pos = Int_val(pos);
int c_len = Int_val(len);
@@ -140,7 +140,7 @@ value mlbz_read(value chan, value buf, v
if((c_len + c_pos > string_length(buf))
|| (c_len < 0) || (c_pos < 0))
invalid_argument("Bz.read") ;
- c_buf = String_val(buf) + c_pos ;
+ c_buf = Bytes_val(buf) + c_pos ;
res = BZ_P(bzRead)(&bzerror, Bzfile_val(chan), c_buf, c_len) ;
if(bzerror == BZ_STREAM_END)
set_eof_flag(chan) ;
@@ -171,7 +171,7 @@ value mlbz_readgetunused(value chan)
BZ_P(bzReadGetUnused)(&bzerror, Bzfile_val(chan), &unused, &nunused) ;
mlbz_error(bzerror, "Bz.read_get_unused: not at end of stream", chan, 1) ;
result = alloc_string(nunused) ;
- memcpy(String_val(result), unused, nunused) ;
+ memcpy(Bytes_val(result), unused, nunused) ;
return result;
}
@@ -195,13 +195,13 @@ value mlbz_writeopen(value block, value
value mlbz_write(value chan, value buf, value pos, value len)
{
int bzerror ;
- char *c_buf ;
+ unsigned char *c_buf ;
int c_pos = Int_val(pos) ;
int c_len = Int_val(len) ;
if((c_len + c_pos > string_length(buf))
|| (c_len < 0) || (c_pos < 0))
invalid_argument("Bz.write") ;
- c_buf = String_val(buf) + c_pos ;
+ c_buf = Bytes_val(buf) + c_pos ;
BZ_P(bzWrite)(&bzerror, Bzfile_val(chan), c_buf, c_len) ;
mlbz_error(bzerror, "Bz.write", chan, 0) ;
return Val_unit;
@@ -239,7 +239,7 @@ value mlbz_compress(value block, value s
|| c_pos < 0 || c_len < 0
|| c_pos + c_len > string_length(src))
invalid_argument("Bz.compress") ;
- src_buf = String_val(src) + c_pos;
+ src_buf = (char *)(Bytes_val(src) + c_pos);
dst_buf_len = c_len * 1.01 + 600 ;
dst_buf = malloc(dst_buf_len) ;
if(dst_buf == NULL)
@@ -264,7 +264,7 @@ value mlbz_compress(value block, value s
}
}
result = alloc_string(dst_len);
- memcpy(String_val(result), dst_buf, dst_len);
+ memcpy(Bytes_val(result), dst_buf, dst_len);
free(dst_buf);
return result ;
}
@@ -284,7 +284,7 @@ value mlbz_uncompress(value small, value
if(c_pos < 0 || c_len < 0
|| c_pos + c_len > string_length(src))
invalid_argument("Bz.uncompress") ;
- src_buf = String_val(src) + c_pos;
+ src_buf = (char *)(Bytes_val(src) + c_pos);
dst_buf_len = c_len * 2 ;
dst_buf = malloc(dst_buf_len) ;
if(dst_buf == NULL)
@@ -317,7 +317,7 @@ value mlbz_uncompress(value small, value
}
}
result = alloc_string(dst_len);
- memcpy(String_val(result), dst_buf, dst_len);
+ memcpy(Bytes_val(result), dst_buf, dst_len);
free(dst_buf);
return result ;
}