@@ -143,6 +143,7 @@ var Helpers = {
143143 }
144144 } ,
145145
146+ // returns the libgittype found in types
146147 decorateLibgitType : function ( type , types , enums ) {
147148 var normalizedType = Helpers . normalizeCtype ( type . cType ) ;
148149 var libgitType = Helpers . getLibgitType ( normalizedType , types ) ;
@@ -164,6 +165,8 @@ var Helpers = {
164165 // we don't want to overwrite the c type of the passed in type
165166 _ . merge ( type , descriptor . types [ normalizedType . replace ( "git_" , "" ) ] || { } , { cType : type . cType } ) ;
166167 }
168+
169+ return libgitType ;
167170 } ,
168171
169172 decoratePrimaryType : function ( typeDef , enums ) {
@@ -176,6 +179,7 @@ var Helpers = {
176179 typeDef . filename = typeDef . typeName ;
177180 typeDef . isLibgitType = true ;
178181 typeDef . dependencies = [ ] ;
182+ typeDef . selfFreeing = Boolean ( typeDefOverrides . selfFreeing ) ;
179183
180184 typeDef . fields = typeDef . fields || [ ] ;
181185 typeDef . fields . forEach ( function ( field , index , allFields ) {
@@ -241,7 +245,7 @@ var Helpers = {
241245 arg . cppClassName = Helpers . cTypeToCppName ( arg . cType ) ;
242246 arg . jsClassName = utils . titleCase ( Helpers . cTypeToJsName ( arg . cType ) ) ;
243247
244- Helpers . decorateLibgitType ( arg , libgit2 . types , enums ) ;
248+ var libgitType = Helpers . decorateLibgitType ( arg , libgit2 . types , enums ) ;
245249
246250 // Some arguments can be callbacks
247251 if ( Helpers . isCallbackFunction ( type ) ) {
@@ -271,6 +275,10 @@ var Helpers = {
271275 _ . every ( allArgs , function ( _arg ) { return ! _arg . isSelf ; } ) ;
272276 }
273277
278+ if ( arg . isReturn && libgitType ) {
279+ arg . selfFreeing = libgitType . selfFreeing ;
280+ }
281+
274282 if ( arg . isReturn && fnDef . return && fnDef . return . type === "int" ) {
275283 fnDef . return . isErrorCode = true ;
276284 fnDef . isAsync = true ;
0 commit comments