// ignore-windows: No libc on Windows

#![feature(rustc_private)]

use core::slice;

extern crate libc;

fn main() {
    unsafe {
        let p1 = libc::calloc(0, 0);
        assert!(p1.is_null());

        let p2 = libc::calloc(20, 0);
        assert!(p2.is_null());

        let p3 = libc::calloc(0, 20);
        assert!(p3.is_null());

        let p4 = libc::calloc(4, 8);
        assert!(!p4.is_null());
        let slice = slice::from_raw_parts(p4 as *const u8, 4 * 8);
        assert_eq!(&slice, &[0_u8; 4 * 8]);
        libc::free(p4);
    }
}
