]> gitweb.factorcode.org Git - factor.git/commitdiff
Fix conflict
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 8 Feb 2009 06:07:59 +0000 (00:07 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 8 Feb 2009 06:07:59 +0000 (00:07 -0600)
1  2 
basis/libc/libc.factor

diff --combined basis/libc/libc.factor
index 623d2f23afcc81d5c4787a7e3cc58311ceb90279,c154544f81a6c4e9d319237c3436219f5044bb44..6863c6ee650306a65cfba745b3178d5c5502e259
@@@ -1,11 -1,17 +1,17 @@@
  ! Copyright (C) 2004, 2005 Mackenzie Straight
 -! Copyright (C) 2007, 2008 Slava Pestov
 +! Copyright (C) 2007, 2009 Slava Pestov
  ! Copyright (C) 2007, 2008 Doug Coleman
  ! See http://factorcode.org/license.txt for BSD license.
 -USING: alien assocs continuations destructors
 -kernel namespaces accessors sets summary ;
 +USING: alien assocs continuations alien.destructors kernel
 +namespaces accessors sets summary ;
  IN: libc
  
+ : errno ( -- int )
+     "int" "factor" "err_no" { } alien-invoke ;
+ : clear-errno ( -- )
+     "void" "factor" "clear_err_no" { } alien-invoke ;
  <PRIVATE
  
  : (malloc) ( size -- alien )
@@@ -52,13 -58,13 +58,13 @@@ M: realloc-error summar
  
  <PRIVATE
  
 -: add-malloc ( alien -- )
 -    mallocs conjoin ;
 +: add-malloc ( alien -- alien )
 +    dup mallocs conjoin ;
  
  : delete-malloc ( alien -- )
      [
          mallocs delete-at*
 -        [ double-free ] unless drop
 +        [ drop ] [ double-free ] if
      ] when* ;
  
  : malloc-exists? ( alien -- ? )
  PRIVATE>
  
  : malloc ( size -- alien )
 -    (malloc) check-ptr
 -    dup add-malloc ;
 +    (malloc) check-ptr add-malloc ;
  
  : calloc ( count size -- alien )
 -    (calloc) check-ptr
 -    dup add-malloc ;
 +    (calloc) check-ptr add-malloc ;
  
  : realloc ( alien size -- newalien )
      [ >c-ptr ] dip
      over malloc-exists? [ realloc-error ] unless
 -    dupd (realloc) check-ptr
 -    swap delete-malloc
 -    dup add-malloc ;
 +    [ drop ] [ (realloc) check-ptr ] 2bi
 +    [ delete-malloc ] [ add-malloc ] bi* ;
  
  : free ( alien -- )
      >c-ptr [ delete-malloc ] [ (free) ] bi ;
  : strlen ( alien -- len )
      "size_t" "libc" "strlen" { "char*" } alien-invoke ;
  
 -<PRIVATE
 -
 -! Memory allocations
 -TUPLE: memory-destructor alien disposed ;
 -
 -M: memory-destructor dispose* alien>> free ;
 -
 -PRIVATE>
 -
 -: &free ( alien -- alien )
 -    dup f memory-destructor boa &dispose drop ; inline
 -
 -: |free ( alien -- alien )
 -    dup f memory-destructor boa |dispose drop ; inline
 +DESTRUCTOR: free