]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/adouble/ad_flush.c
Symlink patch from Anton Starikov
[netatalk.git] / libatalk / adouble / ad_flush.c
index c35001196e742bfacdc5e03da9e173251daf9acb..e0325bd9c51d37377c51c6fcd554a087d92b5cce 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: ad_flush.c,v 1.11 2009-09-14 10:04:16 franklahm Exp $
+ * $Id: ad_flush.c,v 1.12.2.1 2010-01-02 10:22:33 franklahm Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
@@ -168,8 +168,7 @@ int  ad_rebuild_sfm_header(struct adouble *ad)
 }
 
 
-int ad_flush( ad )
-    struct adouble  *ad;
+int ad_flush( struct adouble *ad)
 {
     int len;
 
@@ -195,17 +194,20 @@ int ad_flush( ad )
 }
 
 /* use refcounts so that we don't have to re-establish fcntl locks. */
-int ad_close( ad, adflags )
-    struct adouble  *ad;
-    int         adflags;
+int ad_close( struct adouble *ad, int adflags)
 {
     int         err = 0;
 
     if (( adflags & ADFLAGS_DF ) && ad_data_fileno(ad) != -1 &&
         !(--ad->ad_data_fork.adf_refcount)) {
+        if (ad->ad_data_fork.adf_syml!=0){
+            free(ad->ad_data_fork.adf_syml);
+            ad->ad_data_fork.adf_syml=0;
+        }else{     
         if ( close( ad_data_fileno(ad) ) < 0 ) {
             err = -1;
         }
+        }
         ad_data_fileno(ad) = -1;
         adf_lock_free(&ad->ad_data_fork);
     }