diff options
| author | Kazutaka YOKOTA <yokota@FreeBSD.org> | 2001-06-29 08:24:56 +0000 |
|---|---|---|
| committer | Kazutaka YOKOTA <yokota@FreeBSD.org> | 2001-06-29 08:24:56 +0000 |
| commit | 2317b701676c344a0392feb31a8e5c5521e4c91a (patch) | |
| tree | 685c4dd6334f3cafc2107c56db84d9c62d7225dd /sys/dev/syscons/scvtb.c | |
| parent | 5f431174f398eebb7947b7ea12d25b52ede6ef85 (diff) | |
Notes
Diffstat (limited to 'sys/dev/syscons/scvtb.c')
| -rw-r--r-- | sys/dev/syscons/scvtb.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/syscons/scvtb.c b/sys/dev/syscons/scvtb.c index 2654a4ae265b..cbfde4c83359 100644 --- a/sys/dev/syscons/scvtb.c +++ b/sys/dev/syscons/scvtb.c @@ -62,9 +62,11 @@ sc_vtb_init(sc_vtb_t *vtb, int type, int cols, int rows, void *buf, int wait) (vm_offset_t)malloc(cols*rows*sizeof(u_int16_t), M_DEVBUF, (wait) ? M_WAITOK : M_NOWAIT); - if (vtb->vtb_buffer != NULL) + if (vtb->vtb_buffer != NULL) { bzero((void *)sc_vtb_pointer(vtb, 0), cols*rows*sizeof(u_int16_t)); + vtb->vtb_flags |= VTB_ALLOCED; + } } else { vtb->vtb_buffer = (vm_offset_t)buf; } @@ -84,7 +86,6 @@ sc_vtb_destroy(sc_vtb_t *vtb) { vm_offset_t p; - vtb->vtb_flags = 0; vtb->vtb_cols = 0; vtb->vtb_rows = 0; vtb->vtb_size = 0; @@ -95,12 +96,13 @@ sc_vtb_destroy(sc_vtb_t *vtb) switch (vtb->vtb_type) { case VTB_MEMORY: case VTB_RINGBUFFER: - if (p != NULL) + if ((vtb->vtb_flags & VTB_ALLOCED) && (p != NULL)) free((void *)p, M_DEVBUF); break; default: break; } + vtb->vtb_flags = 0; vtb->vtb_type = VTB_INVALID; } |
