     GL_INFO_LOG_LENGTH gl-shader-get-int ; inline
 
 : gl-shader-info-log ( shader -- log )
-    dup gl-shader-info-log-length
-    dup [
-        0 <int> over glGetShaderInfoLog
+    dup gl-shader-info-log-length dup [
+        [ 0 <int> swap glGetShaderInfoLog ] keep
         alien>char-string
     ] with-malloc ;
 

    GL_INFO_LOG_LENGTH gl-program-get-int ; inline

: gl-program-info-log ( program -- log )
    dup gl-program-info-log-length
    dup [ [ 0 <int> swap glGetProgramInfoLog ] keep
          alien>char-string ] with-malloc ;

: check-gl-program ( program -- program* )
    dup gl-program-ok? [ dup gl-program-info-log throw ] unless ;

: c-true? ( int -- ? ) zero? not ; inline

: with-gl-shader-source-ptr ( string quot -- )
    swap string>char-alien malloc-byte-array [
        <void*> swap call
    ] keep free ; inline

