     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 ;
 

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

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



: gl-program-shaders ( program -- shaders )
    dup gl-program-shaders-length [
        dup "GLuint" <c-array>
        [ 0 <int> swap glGetAttachedShaders ] keep
    ] keep c-uint-array> ;

: delete-gl-program-only ( program -- )
